@xeokit/xeokit-sdk 2.4.0-alpha-81 → 2.4.0-alpha-82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/package.json +2 -1
  2. package/src/extras/ContextMenu/ContextMenu.js +907 -0
  3. package/src/extras/ContextMenu/index.js +1 -0
  4. package/src/extras/index.js +1 -0
  5. package/src/index.js +3 -0
  6. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +658 -0
  7. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +418 -0
  8. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +400 -0
  9. package/src/plugins/AngleMeasurementsPlugin/index.js +1 -0
  10. package/src/plugins/AnnotationsPlugin/Annotation.js +368 -0
  11. package/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +583 -0
  12. package/src/plugins/AnnotationsPlugin/index.js +1 -0
  13. package/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +333 -0
  14. package/src/plugins/AxisGizmoPlugin/index.js +1 -0
  15. package/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +955 -0
  16. package/src/plugins/BCFViewpointsPlugin/index.js +1 -0
  17. package/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +29 -0
  18. package/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +751 -0
  19. package/src/plugins/CityJSONLoaderPlugin/index.js +1 -0
  20. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +870 -0
  21. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +376 -0
  22. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +454 -0
  23. package/src/plugins/DistanceMeasurementsPlugin/index.js +1 -0
  24. package/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +639 -0
  25. package/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +436 -0
  26. package/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +247 -0
  27. package/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +167 -0
  28. package/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +1 -0
  29. package/src/plugins/FastNavPlugin/FastNavPlugin.js +429 -0
  30. package/src/plugins/FastNavPlugin/index.js +1 -0
  31. package/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +139 -0
  32. package/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +421 -0
  33. package/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +669 -0
  34. package/src/plugins/GLTFLoaderPlugin/index.js +2 -0
  35. package/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +58 -0
  36. package/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +518 -0
  37. package/src/plugins/LASLoaderPlugin/index.js +1 -0
  38. package/src/plugins/LASLoaderPlugin/loadLASHeader.js +183 -0
  39. package/src/plugins/NavCubePlugin/CubeTextureCanvas.js +289 -0
  40. package/src/plugins/NavCubePlugin/NavCubePlugin.js +752 -0
  41. package/src/plugins/NavCubePlugin/index.js +1 -0
  42. package/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +145 -0
  43. package/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +777 -0
  44. package/src/plugins/OBJLoaderPlugin/index.js +1 -0
  45. package/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +33 -0
  46. package/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +274 -0
  47. package/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +313 -0
  48. package/src/plugins/STLLoaderPlugin/index.js +2 -0
  49. package/src/plugins/SectionPlanesPlugin/Control.js +1328 -0
  50. package/src/plugins/SectionPlanesPlugin/Overview.js +249 -0
  51. package/src/plugins/SectionPlanesPlugin/Plane.js +169 -0
  52. package/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +404 -0
  53. package/src/plugins/SectionPlanesPlugin/index.js +1 -0
  54. package/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +134 -0
  55. package/src/plugins/SkyboxesPlugin/index.js +1 -0
  56. package/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js +77 -0
  57. package/src/plugins/StoreyViewsPlugin/Storey.js +61 -0
  58. package/src/plugins/StoreyViewsPlugin/StoreyMap.js +57 -0
  59. package/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +825 -0
  60. package/src/plugins/StoreyViewsPlugin/index.js +1 -0
  61. package/src/plugins/TreeViewPlugin/TreeViewNode.js +97 -0
  62. package/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1424 -0
  63. package/src/plugins/TreeViewPlugin/index.js +1 -0
  64. package/src/plugins/ViewCullPlugin/ViewCullPlugin.js +295 -0
  65. package/src/plugins/ViewCullPlugin/index.js +1 -0
  66. package/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +58 -0
  67. package/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +942 -0
  68. package/src/plugins/WebIFCLoaderPlugin/index.js +1 -0
  69. package/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +95 -0
  70. package/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +1107 -0
  71. package/src/plugins/XKTLoaderPlugin/index.js +2 -0
  72. package/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +169 -0
  73. package/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +656 -0
  74. package/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +230 -0
  75. package/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +223 -0
  76. package/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +283 -0
  77. package/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +246 -0
  78. package/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +301 -0
  79. package/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +439 -0
  80. package/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +563 -0
  81. package/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +514 -0
  82. package/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +2 -0
  83. package/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +238 -0
  84. package/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +1279 -0
  85. package/src/plugins/XML3DLoaderPlugin/index.js +1 -0
  86. package/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +11 -0
  87. package/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +2060 -0
  88. package/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +2155 -0
  89. package/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +1002 -0
  90. package/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +64 -0
  91. package/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +153 -0
  92. package/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +267 -0
  93. package/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +553 -0
  94. package/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +991 -0
  95. package/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +49 -0
  96. package/src/plugins/index.js +21 -0
  97. package/src/plugins/lib/culling/ObjectCullStates.js +208 -0
  98. package/src/plugins/lib/earcut.js +677 -0
  99. package/src/plugins/lib/html/Dot.js +145 -0
  100. package/src/plugins/lib/html/Label.js +156 -0
  101. package/src/plugins/lib/html/Wire.js +191 -0
  102. package/src/viewer/Configs.js +79 -0
  103. package/src/viewer/Plugin.js +224 -0
  104. package/src/viewer/Viewer.js +535 -0
  105. package/src/viewer/index.js +5 -0
  106. package/src/viewer/localization/LocaleService.js +475 -0
  107. package/src/viewer/metadata/IFCObjectDefaultColors.js +162 -0
  108. package/src/viewer/metadata/IFCObjectDefaults.js +17 -0
  109. package/src/viewer/metadata/MetaModel.js +389 -0
  110. package/src/viewer/metadata/MetaObject.js +218 -0
  111. package/src/viewer/metadata/MetaScene.js +336 -0
  112. package/src/viewer/metadata/Property.js +55 -0
  113. package/src/viewer/metadata/PropertySet.js +77 -0
  114. package/src/viewer/scene/Bitmap/Bitmap.js +470 -0
  115. package/src/viewer/scene/Bitmap/index.js +1 -0
  116. package/src/viewer/scene/CameraControl/CameraControl.js +1737 -0
  117. package/src/viewer/scene/CameraControl/lib/CameraUpdater.js +312 -0
  118. package/src/viewer/scene/CameraControl/lib/controllers/PanController.js +112 -0
  119. package/src/viewer/scene/CameraControl/lib/controllers/PickController.js +264 -0
  120. package/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +384 -0
  121. package/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +122 -0
  122. package/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +183 -0
  123. package/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +68 -0
  124. package/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +345 -0
  125. package/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +372 -0
  126. package/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +269 -0
  127. package/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +235 -0
  128. package/src/viewer/scene/Component.js +907 -0
  129. package/src/viewer/scene/Entity.js +502 -0
  130. package/src/viewer/scene/ImagePlane/ImagePlane.js +570 -0
  131. package/src/viewer/scene/ImagePlane/index.js +1 -0
  132. package/src/viewer/scene/LineSet/LineSet.js +164 -0
  133. package/src/viewer/scene/LineSet/index.js +1 -0
  134. package/src/viewer/scene/camera/Camera.js +912 -0
  135. package/src/viewer/scene/camera/CameraFlightAnimation.js +669 -0
  136. package/src/viewer/scene/camera/CameraPath.js +194 -0
  137. package/src/viewer/scene/camera/CameraPathAnimation.js +326 -0
  138. package/src/viewer/scene/camera/CustomProjection.js +149 -0
  139. package/src/viewer/scene/camera/Frustum.js +316 -0
  140. package/src/viewer/scene/camera/Ortho.js +286 -0
  141. package/src/viewer/scene/camera/Perspective.js +304 -0
  142. package/src/viewer/scene/camera/index.js +2 -0
  143. package/src/viewer/scene/canvas/Canvas.js +492 -0
  144. package/src/viewer/scene/canvas/Spinner.js +323 -0
  145. package/src/viewer/scene/constants/constants.js +371 -0
  146. package/src/viewer/scene/core.js +233 -0
  147. package/src/viewer/scene/geometry/Geometry.js +33 -0
  148. package/src/viewer/scene/geometry/ReadableGeometry.js +682 -0
  149. package/src/viewer/scene/geometry/VBOGeometry.js +319 -0
  150. package/src/viewer/scene/geometry/builders/buildBoxGeometry.js +238 -0
  151. package/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +106 -0
  152. package/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +271 -0
  153. package/src/viewer/scene/geometry/builders/buildGridGeometry.js +102 -0
  154. package/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +168 -0
  155. package/src/viewer/scene/geometry/builders/buildSphereGeometry.js +161 -0
  156. package/src/viewer/scene/geometry/builders/buildTorusGeometry.js +172 -0
  157. package/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +1721 -0
  158. package/src/viewer/scene/geometry/builders/index.js +8 -0
  159. package/src/viewer/scene/geometry/index.js +4 -0
  160. package/src/viewer/scene/geometry/loaders/index.js +2 -0
  161. package/src/viewer/scene/geometry/loaders/load3DSGeometry.js +103 -0
  162. package/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +130 -0
  163. package/src/viewer/scene/index.js +23 -0
  164. package/src/viewer/scene/input/Input.js +1325 -0
  165. package/src/viewer/scene/libs/k3d.js +1032 -0
  166. package/src/viewer/scene/lights/AmbientLight.js +175 -0
  167. package/src/viewer/scene/lights/CubeTexture.js +156 -0
  168. package/src/viewer/scene/lights/DirLight.js +314 -0
  169. package/src/viewer/scene/lights/Light.js +29 -0
  170. package/src/viewer/scene/lights/LightMap.js +77 -0
  171. package/src/viewer/scene/lights/PointLight.js +395 -0
  172. package/src/viewer/scene/lights/ReflectionMap.js +79 -0
  173. package/src/viewer/scene/lights/Shadow.js +138 -0
  174. package/src/viewer/scene/lights/index.js +5 -0
  175. package/src/viewer/scene/lod/LOD.js +162 -0
  176. package/src/viewer/scene/lod/LODCullingManager.js +83 -0
  177. package/src/viewer/scene/lod/LODState.js +125 -0
  178. package/src/viewer/scene/lod/index.js +1 -0
  179. package/src/viewer/scene/marker/Marker.js +383 -0
  180. package/src/viewer/scene/marker/SpriteMarker.js +356 -0
  181. package/src/viewer/scene/marker/index.js +2 -0
  182. package/src/viewer/scene/materials/EdgeMaterial.js +359 -0
  183. package/src/viewer/scene/materials/EmphasisMaterial.js +613 -0
  184. package/src/viewer/scene/materials/Fresnel.js +222 -0
  185. package/src/viewer/scene/materials/LambertMaterial.js +378 -0
  186. package/src/viewer/scene/materials/LinesMaterial.js +169 -0
  187. package/src/viewer/scene/materials/Material.js +39 -0
  188. package/src/viewer/scene/materials/MetallicMaterial.js +820 -0
  189. package/src/viewer/scene/materials/PhongMaterial.js +860 -0
  190. package/src/viewer/scene/materials/PointsMaterial.js +409 -0
  191. package/src/viewer/scene/materials/SpecularMaterial.js +807 -0
  192. package/src/viewer/scene/materials/Texture.js +513 -0
  193. package/src/viewer/scene/materials/index.js +8 -0
  194. package/src/viewer/scene/math/Frustum.js +118 -0
  195. package/src/viewer/scene/math/buildEdgeIndices.js +162 -0
  196. package/src/viewer/scene/math/geometryCompressionUtils.js +365 -0
  197. package/src/viewer/scene/math/index.js +3 -0
  198. package/src/viewer/scene/math/math.js +5363 -0
  199. package/src/viewer/scene/math/rtcCoords.js +139 -0
  200. package/src/viewer/scene/mementos/CameraMemento.js +200 -0
  201. package/src/viewer/scene/mementos/ModelMemento.js +263 -0
  202. package/src/viewer/scene/mementos/ObjectsMemento.js +259 -0
  203. package/src/viewer/scene/mementos/index.js +3 -0
  204. package/src/viewer/scene/mesh/Mesh.js +2202 -0
  205. package/src/viewer/scene/mesh/draw/DrawRenderer.js +986 -0
  206. package/src/viewer/scene/mesh/draw/DrawShaderSource.js +1570 -0
  207. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +249 -0
  208. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +158 -0
  209. package/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +276 -0
  210. package/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +261 -0
  211. package/src/viewer/scene/mesh/index.js +1 -0
  212. package/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +207 -0
  213. package/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +156 -0
  214. package/src/viewer/scene/mesh/pick/PickMeshRenderer.js +210 -0
  215. package/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +142 -0
  216. package/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +186 -0
  217. package/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +116 -0
  218. package/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
  219. package/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +98 -0
  220. package/src/viewer/scene/metriqs/Metriqs.js +259 -0
  221. package/src/viewer/scene/model/ENTITY_FLAGS.js +21 -0
  222. package/src/viewer/scene/model/PerformanceModel.js +26 -0
  223. package/src/viewer/scene/model/RENDER_PASSES.js +34 -0
  224. package/src/viewer/scene/model/SceneModel.js +3817 -0
  225. package/src/viewer/scene/model/SceneModelEntity.js +478 -0
  226. package/src/viewer/scene/model/SceneModelMesh.js +160 -0
  227. package/src/viewer/scene/model/SceneModelTexture.js +17 -0
  228. package/src/viewer/scene/model/SceneModelTextureSet.js +17 -0
  229. package/src/viewer/scene/model/VBOSceneModel.js +26 -0
  230. package/src/viewer/scene/model/compression.js +227 -0
  231. package/src/viewer/scene/model/dtx/triangles/BindableDataTexture.js +31 -0
  232. package/src/viewer/scene/model/dtx/triangles/DataTextureGenerator.js +631 -0
  233. package/src/viewer/scene/model/dtx/triangles/DataTextureState.js +288 -0
  234. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureBuffer.js +31 -0
  235. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureLayer.js +1329 -0
  236. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureRenderers.js +278 -0
  237. package/src/viewer/scene/model/dtx/triangles/calculateUniquePositions.js +126 -0
  238. package/src/viewer/scene/model/dtx/triangles/dataTextureRamStats.js +54 -0
  239. package/src/viewer/scene/model/dtx/triangles/rebucketPositions.js +347 -0
  240. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorRenderer.js +633 -0
  241. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureDepthRenderer.js +475 -0
  242. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesColorRenderer.js +426 -0
  243. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesRenderer.js +430 -0
  244. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureNormalsRenderer.js +341 -0
  245. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureOcclusionRenderer.js +442 -0
  246. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickDepthRenderer.js +451 -0
  247. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickMeshRenderer.js +436 -0
  248. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js +502 -0
  249. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsRenderer.js +430 -0
  250. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSilhouetteRenderer.js +469 -0
  251. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js +451 -0
  252. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthRenderer.js +424 -0
  253. package/src/viewer/scene/model/index.js +3 -0
  254. package/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
  255. package/src/viewer/scene/model/vbo/VBOSceneModelRenderers.js +805 -0
  256. package/src/viewer/scene/model/vbo/float16.js +760 -0
  257. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingBuffer.js +21 -0
  258. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingLayer.js +744 -0
  259. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingRenderers.js +71 -0
  260. package/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingColorRenderer.js +116 -0
  261. package/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js +126 -0
  262. package/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingLayer.js +653 -0
  263. package/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingRenderers.js +71 -0
  264. package/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingColorRenderer.js +150 -0
  265. package/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js +128 -0
  266. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingBuffer.js +22 -0
  267. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingLayer.js +753 -0
  268. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingRenderers.js +116 -0
  269. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingColorRenderer.js +167 -0
  270. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js +135 -0
  271. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js +154 -0
  272. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js +146 -0
  273. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingShadowRenderer.js +108 -0
  274. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js +147 -0
  275. package/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingLayer.js +684 -0
  276. package/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingRenderers.js +146 -0
  277. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingColorRenderer.js +174 -0
  278. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingDepthRenderer.js +156 -0
  279. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js +151 -0
  280. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js +167 -0
  281. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js +151 -0
  282. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingShadowRenderer.js +121 -0
  283. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js +156 -0
  284. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthBufInitRenderer.js +351 -0
  285. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthRenderer.js +365 -0
  286. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingRenderers.js +71 -0
  287. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthBufInitRenderer.js +381 -0
  288. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthRenderer.js +374 -0
  289. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingRenderers.js +71 -0
  290. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingBuffer.js +26 -0
  291. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingLayer.js +1322 -0
  292. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingRenderers.js +322 -0
  293. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js +240 -0
  294. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js +271 -0
  295. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js +127 -0
  296. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js +129 -0
  297. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js +134 -0
  298. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js +237 -0
  299. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js +139 -0
  300. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js +127 -0
  301. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js +563 -0
  302. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js +143 -0
  303. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js +130 -0
  304. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js +119 -0
  305. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js +129 -0
  306. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js +108 -0
  307. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js +137 -0
  308. package/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingLayer.js +1167 -0
  309. package/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingRenderers.js +322 -0
  310. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js +253 -0
  311. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js +278 -0
  312. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js +125 -0
  313. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js +131 -0
  314. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js +134 -0
  315. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js +244 -0
  316. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js +130 -0
  317. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js +140 -0
  318. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js +130 -0
  319. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js +563 -0
  320. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js +148 -0
  321. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js +135 -0
  322. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js +130 -0
  323. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js +144 -0
  324. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js +113 -0
  325. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js +141 -0
  326. package/src/viewer/scene/nodes/Node.js +1383 -0
  327. package/src/viewer/scene/nodes/index.js +1 -0
  328. package/src/viewer/scene/paths/CubicBezierCurve.js +194 -0
  329. package/src/viewer/scene/paths/Curve.js +183 -0
  330. package/src/viewer/scene/paths/Path.js +239 -0
  331. package/src/viewer/scene/paths/QuadraticBezierCurve.js +161 -0
  332. package/src/viewer/scene/paths/SplineCurve.js +133 -0
  333. package/src/viewer/scene/paths/index.js +5 -0
  334. package/src/viewer/scene/postfx/SAO.js +543 -0
  335. package/src/viewer/scene/scene/Scene.js +2627 -0
  336. package/src/viewer/scene/sectionPlane/SectionPlane.js +194 -0
  337. package/src/viewer/scene/sectionPlane/index.js +1 -0
  338. package/src/viewer/scene/skybox/Skybox.js +123 -0
  339. package/src/viewer/scene/skybox/index.js +1 -0
  340. package/src/viewer/scene/stats.js +44 -0
  341. package/src/viewer/scene/utils/Cache.js +29 -0
  342. package/src/viewer/scene/utils/FileLoader.js +160 -0
  343. package/src/viewer/scene/utils/Loader.js +55 -0
  344. package/src/viewer/scene/utils/LoadingManager.js +86 -0
  345. package/src/viewer/scene/utils/Map.js +45 -0
  346. package/src/viewer/scene/utils/Queue.js +56 -0
  347. package/src/viewer/scene/utils/WorkerPool.js +73 -0
  348. package/src/viewer/scene/utils/index.js +6 -0
  349. package/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +650 -0
  350. package/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +1 -0
  351. package/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +31 -0
  352. package/src/viewer/scene/utils/textureTranscoders/index.js +2 -0
  353. package/src/viewer/scene/utils.js +452 -0
  354. package/src/viewer/scene/vfc/VFC.js +82 -0
  355. package/src/viewer/scene/vfc/VFCManager.js +54 -0
  356. package/src/viewer/scene/vfc/VFCState.js +391 -0
  357. package/src/viewer/scene/vfc/cluster-helper.js +134 -0
  358. package/src/viewer/scene/vfc/index.js +1 -0
  359. package/src/viewer/scene/vfc/rbush3d.js +848 -0
  360. package/src/viewer/scene/vfc/xeokit-cluster.js +418 -0
  361. package/src/viewer/scene/viewport/Viewport.js +212 -0
  362. package/src/viewer/scene/webgl/ArrayBuf.js +121 -0
  363. package/src/viewer/scene/webgl/Attribute.js +23 -0
  364. package/src/viewer/scene/webgl/Drawable.js +270 -0
  365. package/src/viewer/scene/webgl/FrameContext.js +313 -0
  366. package/src/viewer/scene/webgl/PickResult.js +339 -0
  367. package/src/viewer/scene/webgl/Pickable.js +69 -0
  368. package/src/viewer/scene/webgl/Program.js +181 -0
  369. package/src/viewer/scene/webgl/RenderBuffer.js +350 -0
  370. package/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
  371. package/src/viewer/scene/webgl/RenderFlags.js +203 -0
  372. package/src/viewer/scene/webgl/RenderState.js +40 -0
  373. package/src/viewer/scene/webgl/Renderer.js +1654 -0
  374. package/src/viewer/scene/webgl/Sampler.js +18 -0
  375. package/src/viewer/scene/webgl/Shader.js +49 -0
  376. package/src/viewer/scene/webgl/Texture2D.js +442 -0
  377. package/src/viewer/scene/webgl/convertConstant.js +244 -0
  378. package/src/viewer/scene/webgl/getExtension.js +32 -0
  379. package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +214 -0
  380. package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +426 -0
  381. package/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
  382. package/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +376 -0
  383. package/src/viewer/scene/webgl/webglEnums.js +61 -0
  384. package/src/viewer/scene/webglInfo.js +47 -0
@@ -0,0 +1,870 @@
1
+ import {Marker} from "../../viewer/scene/marker/Marker.js";
2
+ import {Wire} from "../lib/html/Wire.js";
3
+ import {Dot} from "../lib/html/Dot.js";
4
+ import {Label} from "../lib/html/Label.js";
5
+ import {math} from "../../viewer/scene/math/math.js";
6
+ import {Component} from "../../viewer/scene/Component.js";
7
+
8
+
9
+ var distVec3 = math.vec3();
10
+
11
+ const lengthWire = (x1, y1, x2, y2) => {
12
+ var a = x1 - x2;
13
+ var b = y1 - y2;
14
+ return Math.sqrt(a * a + b * b);
15
+ };
16
+
17
+ /**
18
+ * @desc Measures the distance between two 3D points.
19
+ *
20
+ * See {@link DistanceMeasurementsPlugin} for more info.
21
+ */
22
+ class DistanceMeasurement extends Component {
23
+
24
+ /**
25
+ * @private
26
+ */
27
+ constructor(plugin, cfg = {}) {
28
+
29
+ super(plugin.viewer.scene, cfg);
30
+
31
+ /**
32
+ * The {@link DistanceMeasurementsPlugin} that owns this DistanceMeasurement.
33
+ * @type {DistanceMeasurementsPlugin}
34
+ */
35
+ this.plugin = plugin;
36
+
37
+ this._container = cfg.container;
38
+ if (!this._container) {
39
+ throw "config missing: container";
40
+ }
41
+
42
+ this._eventSubs = {};
43
+
44
+ var scene = this.plugin.viewer.scene;
45
+
46
+ this._originMarker = new Marker(scene, cfg.origin);
47
+ this._targetMarker = new Marker(scene, cfg.target);
48
+
49
+ this._originWorld = math.vec3();
50
+ this._targetWorld = math.vec3();
51
+
52
+ this._wp = new Float64Array(24);
53
+ this._vp = new Float64Array(24);
54
+ this._pp = new Float64Array(24);
55
+ this._cp = new Float64Array(8);
56
+
57
+ this._xAxisLabelCulled = false;
58
+ this._yAxisLabelCulled = false;
59
+ this._zAxisLabelCulled = false;
60
+
61
+ this._color = cfg.color || this.plugin.defaultColor;
62
+
63
+ const onMouseOver = cfg.onMouseOver ? (event) => {
64
+ cfg.onMouseOver(event, this);
65
+ } : null;
66
+
67
+ const onMouseLeave = cfg.onMouseLeave ? (event) => {
68
+ cfg.onMouseLeave(event, this);
69
+ } : null;
70
+
71
+ const onContextMenu = cfg.onContextMenu ? (event) => {
72
+ cfg.onContextMenu(event, this);
73
+ } : null;
74
+
75
+ const onMouseWheel = (event) => {
76
+ this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent('wheel', event));
77
+ };
78
+
79
+ this._originDot = new Dot(this._container, {
80
+ fillColor: this._color,
81
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 2 : undefined,
82
+ onMouseOver,
83
+ onMouseLeave,
84
+ onMouseWheel,
85
+ onContextMenu
86
+ });
87
+
88
+ this._targetDot = new Dot(this._container, {
89
+ fillColor: this._color,
90
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 2 : undefined,
91
+ onMouseOver,
92
+ onMouseLeave,
93
+ onMouseWheel,
94
+ onContextMenu
95
+ });
96
+
97
+ this._lengthWire = new Wire(this._container, {
98
+ color: this._color,
99
+ thickness: 2,
100
+ thicknessClickable: 6,
101
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 1 : undefined,
102
+ onMouseOver,
103
+ onMouseLeave,
104
+ onMouseWheel,
105
+ onContextMenu
106
+ });
107
+
108
+ this._xAxisWire = new Wire(this._container, {
109
+ color: "#FF0000",
110
+ thickness: 1,
111
+ thicknessClickable: 6,
112
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 1 : undefined,
113
+ onMouseOver,
114
+ onMouseLeave,
115
+ onMouseWheel,
116
+ onContextMenu
117
+ });
118
+
119
+ this._yAxisWire = new Wire(this._container, {
120
+ color: "green",
121
+ thickness: 1,
122
+ thicknessClickable: 6,
123
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 1 : undefined,
124
+ onMouseOver,
125
+ onMouseLeave,
126
+ onMouseWheel,
127
+ onContextMenu
128
+ });
129
+
130
+ this._zAxisWire = new Wire(this._container, {
131
+ color: "blue",
132
+ thickness: 1,
133
+ thicknessClickable: 6,
134
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 1 : undefined,
135
+ onMouseOver,
136
+ onMouseLeave,
137
+ onMouseWheel,
138
+ onContextMenu
139
+ });
140
+
141
+ this._lengthLabel = new Label(this._container, {
142
+ fillColor: this._color,
143
+ prefix: "",
144
+ text: "",
145
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 4 : undefined,
146
+ onMouseOver,
147
+ onMouseLeave,
148
+ onMouseWheel,
149
+ onContextMenu
150
+ });
151
+
152
+ this._xAxisLabel = new Label(this._container, {
153
+ fillColor: "red",
154
+ prefix: "X",
155
+ text: "",
156
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 3 : undefined,
157
+ onMouseOver,
158
+ onMouseLeave,
159
+ onMouseWheel,
160
+ onContextMenu
161
+ });
162
+
163
+ this._yAxisLabel = new Label(this._container, {
164
+ fillColor: "green",
165
+ prefix: "Y",
166
+ text: "",
167
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 3 : undefined,
168
+ onMouseOver,
169
+ onMouseLeave,
170
+ onMouseWheel,
171
+ onContextMenu
172
+ });
173
+
174
+ this._zAxisLabel = new Label(this._container, {
175
+ fillColor: "blue",
176
+ prefix: "Z",
177
+ text: "",
178
+ zIndex: plugin.zIndex !== undefined ? plugin.zIndex + 3 : undefined,
179
+ onMouseOver,
180
+ onMouseLeave,
181
+ onMouseWheel,
182
+ onContextMenu
183
+ });
184
+
185
+ this._wpDirty = false;
186
+ this._vpDirty = false;
187
+ this._cpDirty = false;
188
+
189
+ this._visible = false;
190
+ this._originVisible = false;
191
+ this._targetVisible = false;
192
+ this._wireVisible = false;
193
+ this._axisVisible = false;
194
+ this._xAxisVisible = false;
195
+ this._yAxisVisible = false;
196
+ this._zAxisVisible = false;
197
+ this._axisEnabled = true;
198
+ this._labelsVisible = false;
199
+ this._clickable = false;
200
+
201
+ this._originMarker.on("worldPos", (value) => {
202
+ this._originWorld.set(value || [0, 0, 0]);
203
+ this._wpDirty = true;
204
+ this._needUpdate(0); // No lag
205
+ });
206
+
207
+ this._targetMarker.on("worldPos", (value) => {
208
+ this._targetWorld.set(value || [0, 0, 0]);
209
+ this._wpDirty = true;
210
+ this._needUpdate(0); // No lag
211
+ });
212
+
213
+ this._onViewMatrix = scene.camera.on("viewMatrix", () => {
214
+ this._vpDirty = true;
215
+ this._needUpdate(0); // No lag
216
+ });
217
+
218
+ this._onProjMatrix = scene.camera.on("projMatrix", () => {
219
+ this._cpDirty = true;
220
+ this._needUpdate();
221
+ });
222
+
223
+ this._onCanvasBoundary = scene.canvas.on("boundary", () => {
224
+ this._cpDirty = true;
225
+ this._needUpdate(0); // No lag
226
+ });
227
+
228
+ this._onMetricsUnits = scene.metrics.on("units", () => {
229
+ this._cpDirty = true;
230
+ this._needUpdate();
231
+ });
232
+
233
+ this._onMetricsScale = scene.metrics.on("scale", () => {
234
+ this._cpDirty = true;
235
+ this._needUpdate();
236
+ });
237
+
238
+ this._onMetricsOrigin = scene.metrics.on("origin", () => {
239
+ this._cpDirty = true;
240
+ this._needUpdate();
241
+ });
242
+
243
+ this.approximate = cfg.approximate;
244
+ this.visible = cfg.visible;
245
+ this.originVisible = cfg.originVisible;
246
+ this.targetVisible = cfg.targetVisible;
247
+ this.wireVisible = cfg.wireVisible;
248
+ this.axisVisible = cfg.axisVisible;
249
+ this.xAxisVisible = cfg.xAxisVisible;
250
+ this.yAxisVisible = cfg.yAxisVisible;
251
+ this.zAxisVisible = cfg.zAxisVisible;
252
+ this.labelsVisible = cfg.labelsVisible;
253
+ }
254
+
255
+ _update() {
256
+
257
+ if (!this._visible) {
258
+ return;
259
+ }
260
+
261
+ const scene = this.plugin.viewer.scene;
262
+
263
+ if (this._wpDirty) {
264
+
265
+ this._wp[0] = this._originWorld[0];
266
+ this._wp[1] = this._originWorld[1];
267
+ this._wp[2] = this._originWorld[2];
268
+ this._wp[3] = 1.0;
269
+
270
+ this._wp[4] = this._targetWorld[0];
271
+ this._wp[5] = this._originWorld[1];
272
+ this._wp[6] = this._originWorld[2];
273
+ this._wp[7] = 1.0;
274
+
275
+ this._wp[8] = this._targetWorld[0];
276
+ this._wp[9] = this._targetWorld[1];
277
+ this._wp[10] = this._originWorld[2];
278
+ this._wp[11] = 1.0;
279
+
280
+ this._wp[12] = this._targetWorld[0];
281
+ this._wp[13] = this._targetWorld[1];
282
+ this._wp[14] = this._targetWorld[2];
283
+ this._wp[15] = 1.0;
284
+
285
+ this._wpDirty = false;
286
+ this._vpDirty = true;
287
+ }
288
+
289
+ if (this._vpDirty) {
290
+
291
+ math.transformPositions4(scene.camera.viewMatrix, this._wp, this._vp);
292
+
293
+ this._vp[3] = 1.0;
294
+ this._vp[7] = 1.0;
295
+ this._vp[11] = 1.0;
296
+ this._vp[15] = 1.0;
297
+
298
+ this._vpDirty = false;
299
+ this._cpDirty = true;
300
+ }
301
+
302
+ const near = -0.3;
303
+ const vpz1 = this._originMarker.viewPos[2];
304
+ const vpz2 = this._targetMarker.viewPos[2];
305
+
306
+ if (vpz1 > near || vpz2 > near) {
307
+
308
+ this._xAxisLabel.setCulled(true);
309
+ this._yAxisLabel.setCulled(true);
310
+ this._zAxisLabel.setCulled(true);
311
+ this._lengthLabel.setCulled(true);
312
+
313
+ this._xAxisWire.setVisible(false);
314
+ this._yAxisWire.setVisible(false);
315
+ this._zAxisWire.setVisible(false);
316
+ this._lengthWire.setVisible(false);
317
+
318
+ this._originDot.setVisible(false);
319
+ this._targetDot.setVisible(false);
320
+
321
+ return;
322
+ }
323
+
324
+ if (this._cpDirty) {
325
+
326
+ math.transformPositions4(scene.camera.project.matrix, this._vp, this._pp);
327
+
328
+ var pp = this._pp;
329
+ var cp = this._cp;
330
+
331
+ var canvas = scene.canvas.canvas;
332
+ var offsets = canvas.getBoundingClientRect();
333
+ const containerOffsets = this._container.getBoundingClientRect();
334
+ var top = offsets.top - containerOffsets.top;
335
+ var left = offsets.left - containerOffsets.left;
336
+ var aabb = scene.canvas.boundary;
337
+ var canvasWidth = aabb[2];
338
+ var canvasHeight = aabb[3];
339
+ var j = 0;
340
+
341
+ const metrics = this.plugin.viewer.scene.metrics;
342
+ const scale = metrics.scale;
343
+ const units = metrics.units;
344
+ const unitInfo = metrics.unitsInfo[units];
345
+ const unitAbbrev = unitInfo.abbrev;
346
+
347
+ for (var i = 0, len = pp.length; i < len; i += 4) {
348
+ cp[j] = left + Math.floor((1 + pp[i + 0] / pp[i + 3]) * canvasWidth / 2);
349
+ cp[j + 1] = top + Math.floor((1 - pp[i + 1] / pp[i + 3]) * canvasHeight / 2);
350
+ j += 2;
351
+ }
352
+
353
+ this._originDot.setPos(cp[0], cp[1]);
354
+ this._targetDot.setPos(cp[6], cp[7]);
355
+
356
+ this._lengthWire.setStartAndEnd(cp[0], cp[1], cp[6], cp[7]);
357
+
358
+ this._xAxisWire.setStartAndEnd(cp[0], cp[1], cp[2], cp[3]);
359
+ this._yAxisWire.setStartAndEnd(cp[2], cp[3], cp[4], cp[5]);
360
+ this._zAxisWire.setStartAndEnd(cp[4], cp[5], cp[6], cp[7]);
361
+
362
+ if (!this.labelsVisible) {
363
+
364
+ this._lengthLabel.setCulled(true);
365
+
366
+ this._xAxisLabel.setCulled(true);
367
+ this._yAxisLabel.setCulled(true);
368
+ this._zAxisLabel.setCulled(true);
369
+
370
+ } else {
371
+
372
+ this._lengthLabel.setPosOnWire(cp[0], cp[1], cp[6], cp[7]);
373
+
374
+ this._xAxisLabel.setPosOnWire(cp[0], cp[1], cp[2], cp[3]);
375
+ this._yAxisLabel.setPosOnWire(cp[2], cp[3], cp[4], cp[5]);
376
+ this._zAxisLabel.setPosOnWire(cp[4], cp[5], cp[6], cp[7]);
377
+
378
+ const tilde = this._approximate ? " ~ " : " = ";
379
+
380
+ this._length = Math.abs(math.lenVec3(math.subVec3(this._targetWorld, this._originWorld, distVec3)))
381
+ this._lengthLabel.setText(tilde + (this._length * scale).toFixed(2) + unitAbbrev);
382
+
383
+ const xAxisCanvasLength = Math.abs(lengthWire(cp[0], cp[1], cp[2], cp[3]));
384
+ const yAxisCanvasLength = Math.abs(lengthWire(cp[2], cp[3], cp[4], cp[5]));
385
+ const zAxisCanvasLength = Math.abs(lengthWire(cp[4], cp[5], cp[6], cp[7]));
386
+
387
+ const labelMinAxisLength = this.plugin.labelMinAxisLength;
388
+
389
+ this._xAxisLabelCulled = (xAxisCanvasLength < labelMinAxisLength);
390
+ this._yAxisLabelCulled = (yAxisCanvasLength < labelMinAxisLength);
391
+ this._zAxisLabelCulled = (zAxisCanvasLength < labelMinAxisLength);
392
+
393
+ if (!this._xAxisLabelCulled) {
394
+ this._xAxisLabel.setText(tilde + Math.abs((this._targetWorld[0] - this._originWorld[0]) * scale).toFixed(2) + unitAbbrev);
395
+ this._xAxisLabel.setCulled(!this.axisVisible);
396
+ } else {
397
+ this._xAxisLabel.setCulled(true);
398
+ }
399
+
400
+ if (!this._yAxisLabelCulled) {
401
+ this._yAxisLabel.setText(tilde + Math.abs((this._targetWorld[1] - this._originWorld[1]) * scale).toFixed(2) + unitAbbrev);
402
+ this._yAxisLabel.setCulled(!this.axisVisible);
403
+ } else {
404
+ this._yAxisLabel.setCulled(true);
405
+ }
406
+
407
+ if (!this._zAxisLabelCulled) {
408
+ this._zAxisLabel.setText(tilde + Math.abs((this._targetWorld[2] - this._originWorld[2]) * scale).toFixed(2) + unitAbbrev);
409
+ this._zAxisLabel.setCulled(!this.axisVisible);
410
+ } else {
411
+ this._zAxisLabel.setCulled(true);
412
+ }
413
+ }
414
+
415
+ // this._xAxisLabel.setVisible(this.axisVisible && this.xAxisVisible);
416
+ // this._yAxisLabel.setVisible(this.axisVisible && this.yAxisVisible);
417
+ // this._zAxisLabel.setVisible(this.axisVisible && this.zAxisVisible);
418
+ // this._lengthLabel.setVisible(false);
419
+
420
+ this._originDot.setVisible(this._visible && this._originVisible);
421
+ this._targetDot.setVisible(this._visible && this._targetVisible);
422
+
423
+ this._xAxisWire.setVisible(this.axisVisible && this.xAxisVisible);
424
+ this._yAxisWire.setVisible(this.axisVisible && this.yAxisVisible);
425
+ this._zAxisWire.setVisible(this.axisVisible && this.zAxisVisible);
426
+
427
+ this._lengthWire.setVisible(this.wireVisible);
428
+ this._lengthLabel.setCulled(!this.wireVisible);
429
+
430
+ this._cpDirty = false;
431
+ }
432
+ }
433
+
434
+ /**
435
+ * Sets whether this DistanceMeasurement indicates that its measurement is approximate.
436
+ *
437
+ * This is ````true```` by default.
438
+ *
439
+ * @type {Boolean}
440
+ */
441
+ set approximate(approximate) {
442
+ approximate = approximate !== false;
443
+ if (this._approximate === approximate) {
444
+ return;
445
+ }
446
+ this._approximate = approximate;
447
+ this._cpDirty = true;
448
+ this._needUpdate(0);
449
+ }
450
+
451
+ /**
452
+ * Gets whether this DistanceMeasurement indicates that its measurement is approximate.
453
+ *
454
+ * This is ````true```` by default.
455
+ *
456
+ * @type {Boolean}
457
+ */
458
+ get approximate() {
459
+ return this._approximate;
460
+ }
461
+
462
+ /**
463
+ * Gets the origin {@link Marker}.
464
+ *
465
+ * @type {Marker}
466
+ */
467
+ get origin() {
468
+ return this._originMarker;
469
+ }
470
+
471
+ /**
472
+ * Gets the target {@link Marker}.
473
+ *
474
+ * @type {Marker}
475
+ */
476
+ get target() {
477
+ return this._targetMarker;
478
+ }
479
+
480
+ /**
481
+ * Gets the World-space direct point-to-point distance between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target}.
482
+ *
483
+ * @type {Number}
484
+ */
485
+ get length() {
486
+ this._update();
487
+ const scale = this.plugin.viewer.scene.metrics.scale;
488
+ return this._length * scale;
489
+ }
490
+
491
+ get color() {
492
+ return this._color;
493
+ }
494
+
495
+ set color(value) {
496
+ this._color = value;
497
+ this._originDot.setFillColor(value);
498
+ this._targetDot.setFillColor(value);
499
+ this._lengthWire.setColor(value);
500
+ this._lengthLabel.setFillColor(value);
501
+ }
502
+
503
+ /**
504
+ * Sets whether this DistanceMeasurement is visible or not.
505
+ *
506
+ * @type {Boolean}
507
+ */
508
+ set visible(value) {
509
+
510
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultVisible;
511
+
512
+ this._visible = value;
513
+
514
+ this._originDot.setVisible(this._visible && this._originVisible);
515
+ this._targetDot.setVisible(this._visible && this._targetVisible);
516
+ this._lengthWire.setVisible(this._visible && this._wireVisible);
517
+ this._lengthLabel.setVisible(this._visible && this._wireVisible);
518
+
519
+ const xAxisVisible = this._visible && this._axisVisible && this._xAxisVisible;
520
+ const yAxisVisible = this._visible && this._axisVisible && this._yAxisVisible;
521
+ const zAxisVisible = this._visible && this._axisVisible && this._zAxisVisible;
522
+
523
+ this._xAxisWire.setVisible(xAxisVisible);
524
+ this._yAxisWire.setVisible(yAxisVisible);
525
+ this._zAxisWire.setVisible(zAxisVisible);
526
+
527
+ this._xAxisLabel.setVisible(xAxisVisible && !this._xAxisLabelCulled);
528
+ this._yAxisLabel.setVisible(yAxisVisible && !this._yAxisLabelCulled);
529
+ this._zAxisLabel.setVisible(zAxisVisible && !this._zAxisLabelCulled);
530
+
531
+ this._cpDirty = true;
532
+
533
+ this._needUpdate();
534
+ }
535
+
536
+ /**
537
+ * Gets whether this DistanceMeasurement is visible or not.
538
+ *
539
+ * @type {Boolean}
540
+ */
541
+ get visible() {
542
+ return this._visible;
543
+ }
544
+
545
+ /**
546
+ * Sets if the origin {@link Marker} is visible.
547
+ *
548
+ * @type {Boolean}
549
+ */
550
+ set originVisible(value) {
551
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultOriginVisible;
552
+ this._originVisible = value;
553
+ this._originDot.setVisible(this._visible && this._originVisible);
554
+ }
555
+
556
+ /**
557
+ * Gets if the origin {@link Marker} is visible.
558
+ *
559
+ * @type {Boolean}
560
+ */
561
+ get originVisible() {
562
+ return this._originVisible;
563
+ }
564
+
565
+ /**
566
+ * Sets if the target {@link Marker} is visible.
567
+ *
568
+ * @type {Boolean}
569
+ */
570
+ set targetVisible(value) {
571
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultTargetVisible;
572
+ this._targetVisible = value;
573
+ this._targetDot.setVisible(this._visible && this._targetVisible);
574
+ }
575
+
576
+ /**
577
+ * Gets if the target {@link Marker} is visible.
578
+ *
579
+ * @type {Boolean}
580
+ */
581
+ get targetVisible() {
582
+ return this._targetVisible;
583
+ }
584
+
585
+ /**
586
+ * Sets if the axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are enabled.
587
+ *
588
+ * Wires are only shown if enabled and visible.
589
+ *
590
+ * @type {Boolean}
591
+ */
592
+ set axisEnabled(value) {
593
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultAxisVisible;
594
+ this._axisEnabled = value;
595
+ var axisVisible = this._visible && this._axisVisible && this._axisEnabled;
596
+ this._xAxisWire.setVisible(axisVisible && this._xAxisVisible);
597
+ this._yAxisWire.setVisible(axisVisible && this._yAxisVisible);
598
+ this._zAxisWire.setVisible(axisVisible && this._zAxisVisible);
599
+ this._xAxisLabel.setVisible(axisVisible && !this._xAxisLabelCulled&& this._xAxisVisible);
600
+ this._yAxisLabel.setVisible(axisVisible && !this._yAxisLabelCulled&& this._xAxisVisible);
601
+ this._zAxisLabel.setVisible(axisVisible && !this._zAxisLabelCulled&& this._xAxisVisible);
602
+ this._cpDirty = true;
603
+ this._needUpdate();
604
+ }
605
+
606
+ /**
607
+ * Gets if the axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are enabled.
608
+ *
609
+ * Wires are only shown if enabled and visible.
610
+ *
611
+ * @type {Boolean}
612
+ */
613
+ get axisEnabled() {
614
+ return this._axisEnabled;
615
+ }
616
+
617
+ /**
618
+ * Sets if the axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are visible.
619
+ *
620
+ * Wires are only shown if enabled and visible.
621
+ *
622
+ * @type {Boolean}
623
+ */
624
+ set axisVisible(value) {
625
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultAxisVisible;
626
+ this._axisVisible = value;
627
+ var axisVisible = this._visible && this._axisVisible && this._axisEnabled;
628
+ this._xAxisWire.setVisible(axisVisible && this._xAxisVisible);
629
+ this._yAxisWire.setVisible(axisVisible && this._yAxisVisible);
630
+ this._zAxisWire.setVisible(axisVisible && this._zAxisVisible);
631
+ this._xAxisLabel.setVisible(axisVisible && !this._xAxisLabelCulled&& this._xAxisVisible);
632
+ this._yAxisLabel.setVisible(axisVisible && !this._yAxisLabelCulled&& this._yAxisVisible);
633
+ this._zAxisLabel.setVisible(axisVisible && !this._zAxisLabelCulled&& this._zAxisVisible);
634
+ this._cpDirty = true;
635
+ this._needUpdate();
636
+ }
637
+
638
+ /**
639
+ * Gets if the axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are visible.
640
+ *
641
+ * Wires are only shown if enabled and visible.
642
+ *
643
+ * @type {Boolean}
644
+ */
645
+ get axisVisible() {
646
+ return this._axisVisible;
647
+ }
648
+
649
+ /**
650
+ * Sets if the X-axis-aligned wire between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} is visible.
651
+ *
652
+ * Wires are only shown if enabled and visible.
653
+ *
654
+ * @type {Boolean}
655
+ */
656
+ set xAxisVisible(value) {
657
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultAxisVisible;
658
+ this._xAxisVisible = value;
659
+ const axisVisible = this._visible && this._axisVisible && this._xAxisVisible && this._axisEnabled;
660
+ this._xAxisWire.setVisible(axisVisible);
661
+ this._xAxisLabel.setVisible(axisVisible && !this._xAxisLabelCulled);
662
+ this._cpDirty = true;
663
+ this._needUpdate();
664
+ }
665
+
666
+ /**
667
+ * Gets if the X-axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are visible.
668
+ *
669
+ * Wires are only shown if enabled and visible.
670
+ *
671
+ * @type {Boolean}
672
+ */
673
+ get xAxisVisible() {
674
+ return this._xAxisVisible;
675
+ }
676
+
677
+ /**
678
+ * Sets if the Y-axis-aligned wire between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} is visible.
679
+ *
680
+ * Wires are only shown if enabled and visible.
681
+ *
682
+ * @type {Boolean}
683
+ */
684
+ set yAxisVisible(value) {
685
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultAxisVisible;
686
+ this._yAxisVisible = value;
687
+ const axisVisible = this._visible && this._axisVisible && this._yAxisVisible && this._axisEnabled;
688
+ this._yAxisWire.setVisible(axisVisible);
689
+ this._yAxisLabel.setVisible(axisVisible && !this._yAxisLabelCulled);
690
+ this._cpDirty = true;
691
+ this._needUpdate();
692
+ }
693
+
694
+ /**
695
+ * Gets if the Y-axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are visible.
696
+ *
697
+ * Wires are only shown if enabled and visible.
698
+ *
699
+ * @type {Boolean}
700
+ */
701
+ get yAxisVisible() {
702
+ return this._yAxisVisible;
703
+ }
704
+
705
+ /**
706
+ * Sets if the Z-axis-aligned wire between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} is visible.
707
+ *
708
+ * Wires are only shown if enabled and visible.
709
+ *
710
+ * @type {Boolean}
711
+ */
712
+ set zAxisVisible(value) {
713
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultAxisVisible;
714
+ this._zAxisVisible = value;
715
+ const axisVisible = this._visible && this._axisVisible && this._zAxisVisible && this._axisEnabled;
716
+ this._zAxisWire.setVisible(axisVisible);
717
+ this._zAxisLabel.setVisible(axisVisible && !this._zAxisLabelCulled);
718
+ this._cpDirty = true;
719
+ this._needUpdate();
720
+ }
721
+
722
+ /**
723
+ * Gets if the Z-axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are visible.
724
+ *
725
+ * Wires are only shown if enabled and visible.
726
+ *
727
+ * @type {Boolean}
728
+ */
729
+ get zAxisVisible() {
730
+ return this._zAxisVisible;
731
+ }
732
+
733
+ /**
734
+ * Sets if the direct point-to-point wire between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} is visible.
735
+ *
736
+ * @type {Boolean}
737
+ */
738
+ set wireVisible(value) {
739
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultWireVisible;
740
+ this._wireVisible = value;
741
+ var wireVisible = this._visible && this._wireVisible;
742
+ this._lengthLabel.setVisible(wireVisible);
743
+ this._lengthWire.setVisible(wireVisible);
744
+ }
745
+
746
+ /**
747
+ * Gets if the direct point-to-point wire between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} is visible.
748
+ *
749
+ * @type {Boolean}
750
+ */
751
+ get wireVisible() {
752
+ return this._wireVisible;
753
+ }
754
+
755
+ /**
756
+ * Sets if the labels are visible.
757
+ *
758
+ * @type {Boolean}
759
+ */
760
+ set labelsVisible(value) {
761
+ value = value !== undefined ? Boolean(value) : this.plugin.defaultLabelsVisible;
762
+ this._labelsVisible = value;
763
+ var labelsVisible = this._visible && this._labelsVisible;
764
+ this._xAxisLabel.setVisible(labelsVisible && !this._xAxisLabelCulled && this._clickable && this._axisEnabled);
765
+ this._yAxisLabel.setVisible(labelsVisible && !this._yAxisLabelCulled && this._clickable && this._axisEnabled);
766
+ this._zAxisLabel.setVisible(labelsVisible && !this._zAxisLabelCulled && this._clickable && this._axisEnabled);
767
+ this._lengthLabel.setVisible(labelsVisible);
768
+ this._cpDirty = true;
769
+ this._needUpdate();
770
+ }
771
+
772
+ /**
773
+ * Gets if the labels are visible.
774
+ *
775
+ * @type {Boolean}
776
+ */
777
+ get labelsVisible() {
778
+ return this._labelsVisible;
779
+ }
780
+
781
+ /**
782
+ * Sets if this DistanceMeasurement appears highlighted.
783
+ * @param highlighted
784
+ */
785
+ setHighlighted(highlighted) {
786
+ this._originDot.setHighlighted(highlighted);
787
+ this._targetDot.setHighlighted(highlighted);
788
+ this._xAxisWire.setHighlighted(highlighted);
789
+ this._yAxisWire.setHighlighted(highlighted);
790
+ this._zAxisWire.setHighlighted(highlighted);
791
+ this._xAxisLabel.setHighlighted(highlighted);
792
+ this._yAxisLabel.setHighlighted(highlighted);
793
+ this._zAxisLabel.setHighlighted(highlighted);
794
+ this._lengthWire.setHighlighted(highlighted);
795
+ this._lengthLabel.setHighlighted(highlighted);
796
+ }
797
+
798
+ /**
799
+ * Sets if the wires, dots ad labels will fire "mouseOver" "mouseLeave" and "contextMenu" events, or ignore mouse events altogether.
800
+ *
801
+ * @type {Boolean}
802
+ */
803
+ set clickable(value) {
804
+ value = !!value;
805
+ this._clickable = value;
806
+ this._originDot.setClickable(this._clickable);
807
+ this._targetDot.setClickable(this._clickable);
808
+ this._xAxisWire.setClickable(this._clickable);
809
+ this._yAxisWire.setClickable(this._clickable);
810
+ this._zAxisWire.setClickable(this._clickable);
811
+ this._lengthWire.setClickable(this._clickable);
812
+ this._xAxisLabel.setClickable(this._clickable);
813
+ this._yAxisLabel.setClickable(this._clickable);
814
+ this._zAxisLabel.setClickable(this._clickable);
815
+ this._lengthLabel.setClickable(this._clickable);
816
+ }
817
+
818
+ /**
819
+ * Gets if the wires, dots ad labels will fire "mouseOver" "mouseLeave" and "contextMenu" events.
820
+ *
821
+ * @type {Boolean}
822
+ */
823
+ get clickable() {
824
+ return this._clickable;
825
+ }
826
+
827
+ /**
828
+ * @private
829
+ */
830
+ destroy() {
831
+
832
+ const scene = this.plugin.viewer.scene;
833
+ const metrics = scene.metrics;
834
+
835
+ if (this._onViewMatrix) {
836
+ scene.camera.off(this._onViewMatrix);
837
+ }
838
+ if (this._onProjMatrix) {
839
+ scene.camera.off(this._onProjMatrix);
840
+ }
841
+ if (this._onCanvasBoundary) {
842
+ scene.canvas.off(this._onCanvasBoundary);
843
+ }
844
+
845
+ if (this._onMetricsUnits) {
846
+ metrics.off(this._onMetricsUnits);
847
+ }
848
+ if (this._onMetricsScale) {
849
+ metrics.off(this._onMetricsScale);
850
+ }
851
+ if (this._onMetricsOrigin) {
852
+ metrics.off(this._onMetricsOrigin);
853
+ }
854
+
855
+ this._originDot.destroy();
856
+ this._targetDot.destroy();
857
+ this._xAxisWire.destroy();
858
+ this._yAxisWire.destroy();
859
+ this._zAxisWire.destroy();
860
+ this._lengthLabel.destroy();
861
+ this._xAxisLabel.destroy();
862
+ this._yAxisLabel.destroy();
863
+ this._zAxisLabel.destroy();
864
+ this._lengthWire.destroy();
865
+
866
+ super.destroy();
867
+ }
868
+ }
869
+
870
+ export {DistanceMeasurement};