@xeokit/xeokit-sdk 2.5.2-beta-10 → 2.5.2-beta-13

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 (462) hide show
  1. package/dist/xeokit-sdk.cjs.js +146 -132
  2. package/dist/xeokit-sdk.es.js +146 -132
  3. package/dist/xeokit-sdk.es5.js +84 -84
  4. package/dist/xeokit-sdk.min.cjs.js +1 -1
  5. package/dist/xeokit-sdk.min.es.js +1 -1
  6. package/dist/xeokit-sdk.min.es5.js +1 -1
  7. package/package.json +1 -1
  8. package/src/src/extras/ContextMenu/ContextMenu.js +907 -0
  9. package/src/src/extras/ContextMenu/index.js +1 -0
  10. package/src/src/extras/MarqueePicker/MarqueePicker.js +352 -0
  11. package/src/src/extras/MarqueePicker/MarqueePickerMouseControl.js +174 -0
  12. package/src/src/extras/MarqueePicker/index.js +2 -0
  13. package/src/src/extras/PointerLens/PointerLens.js +312 -0
  14. package/src/src/extras/PointerLens/index.js +1 -0
  15. package/src/src/extras/collision/ObjectsKdTree3.js +149 -0
  16. package/src/src/extras/collision/index.js +1 -0
  17. package/src/src/extras/index.js +4 -0
  18. package/src/src/index.js +3 -0
  19. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +731 -0
  20. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +84 -0
  21. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js +435 -0
  22. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +406 -0
  23. package/src/src/plugins/AngleMeasurementsPlugin/index.js +3 -0
  24. package/src/src/plugins/AnnotationsPlugin/Annotation.js +368 -0
  25. package/src/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +583 -0
  26. package/src/src/plugins/AnnotationsPlugin/index.js +1 -0
  27. package/src/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +333 -0
  28. package/src/src/plugins/AxisGizmoPlugin/index.js +1 -0
  29. package/src/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +977 -0
  30. package/src/src/plugins/BCFViewpointsPlugin/index.js +1 -0
  31. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +29 -0
  32. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +751 -0
  33. package/src/src/plugins/CityJSONLoaderPlugin/index.js +1 -0
  34. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +963 -0
  35. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +84 -0
  36. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js +399 -0
  37. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +505 -0
  38. package/src/src/plugins/DistanceMeasurementsPlugin/index.js +3 -0
  39. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +639 -0
  40. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +436 -0
  41. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +247 -0
  42. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +167 -0
  43. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +1 -0
  44. package/src/src/plugins/FastNavPlugin/FastNavPlugin.js +429 -0
  45. package/src/src/plugins/FastNavPlugin/index.js +1 -0
  46. package/src/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +140 -0
  47. package/src/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +421 -0
  48. package/src/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +669 -0
  49. package/src/src/plugins/GLTFLoaderPlugin/index.js +2 -0
  50. package/src/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +58 -0
  51. package/src/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +563 -0
  52. package/src/src/plugins/LASLoaderPlugin/index.js +1 -0
  53. package/src/src/plugins/LASLoaderPlugin/loadLASHeader.js +183 -0
  54. package/src/src/plugins/NavCubePlugin/CubeTextureCanvas.js +290 -0
  55. package/src/src/plugins/NavCubePlugin/NavCubePlugin.js +753 -0
  56. package/src/src/plugins/NavCubePlugin/index.js +1 -0
  57. package/src/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +145 -0
  58. package/src/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +777 -0
  59. package/src/src/plugins/OBJLoaderPlugin/index.js +1 -0
  60. package/src/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +33 -0
  61. package/src/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +274 -0
  62. package/src/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +313 -0
  63. package/src/src/plugins/STLLoaderPlugin/index.js +2 -0
  64. package/src/src/plugins/SectionPlanesPlugin/Control.js +1328 -0
  65. package/src/src/plugins/SectionPlanesPlugin/Overview.js +249 -0
  66. package/src/src/plugins/SectionPlanesPlugin/Plane.js +169 -0
  67. package/src/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +404 -0
  68. package/src/src/plugins/SectionPlanesPlugin/index.js +1 -0
  69. package/src/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +134 -0
  70. package/src/src/plugins/SkyboxesPlugin/index.js +1 -0
  71. package/src/src/plugins/StoreyViewsPlugin/Storey.js +84 -0
  72. package/src/src/plugins/StoreyViewsPlugin/StoreyMap.js +57 -0
  73. package/src/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +773 -0
  74. package/src/src/plugins/StoreyViewsPlugin/index.js +1 -0
  75. package/src/src/plugins/TreeViewPlugin/RenderService.js +169 -0
  76. package/src/src/plugins/TreeViewPlugin/TreeViewNode.js +101 -0
  77. package/src/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1370 -0
  78. package/src/src/plugins/TreeViewPlugin/index.js +1 -0
  79. package/src/src/plugins/ViewCullPlugin/ViewCullPlugin.js +295 -0
  80. package/src/src/plugins/ViewCullPlugin/index.js +1 -0
  81. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +58 -0
  82. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +942 -0
  83. package/src/src/plugins/WebIFCLoaderPlugin/index.js +1 -0
  84. package/src/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +95 -0
  85. package/src/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +1194 -0
  86. package/src/src/plugins/XKTLoaderPlugin/index.js +2 -0
  87. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +169 -0
  88. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +660 -0
  89. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV11.js +663 -0
  90. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +230 -0
  91. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +223 -0
  92. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +283 -0
  93. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +246 -0
  94. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +301 -0
  95. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +439 -0
  96. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +563 -0
  97. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +518 -0
  98. package/src/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +2 -0
  99. package/src/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +238 -0
  100. package/src/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +1279 -0
  101. package/src/src/plugins/XML3DLoaderPlugin/index.js +1 -0
  102. package/src/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +11 -0
  103. package/src/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +2060 -0
  104. package/src/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +2155 -0
  105. package/src/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +1002 -0
  106. package/src/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +64 -0
  107. package/src/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +153 -0
  108. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +267 -0
  109. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +553 -0
  110. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +991 -0
  111. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +49 -0
  112. package/src/src/plugins/index.js +21 -0
  113. package/src/src/plugins/lib/culling/ObjectCullStates.js +208 -0
  114. package/src/src/plugins/lib/earcut.js +677 -0
  115. package/src/src/plugins/lib/html/Dot.js +179 -0
  116. package/src/src/plugins/lib/html/Label.js +174 -0
  117. package/src/src/plugins/lib/html/Wire.js +220 -0
  118. package/src/src/viewer/Configs.js +127 -0
  119. package/src/src/viewer/Plugin.js +233 -0
  120. package/src/src/viewer/Viewer.js +542 -0
  121. package/src/src/viewer/index.js +5 -0
  122. package/src/src/viewer/localization/LocaleService.js +475 -0
  123. package/src/src/viewer/metadata/IFCObjectDefaultColors.js +163 -0
  124. package/src/src/viewer/metadata/IFCObjectDefaults.js +17 -0
  125. package/src/src/viewer/metadata/MetaModel.js +414 -0
  126. package/src/src/viewer/metadata/MetaObject.js +223 -0
  127. package/src/src/viewer/metadata/MetaScene.js +336 -0
  128. package/src/src/viewer/metadata/Property.js +55 -0
  129. package/src/src/viewer/metadata/PropertySet.js +77 -0
  130. package/src/src/viewer/scene/Bitmap/Bitmap.js +473 -0
  131. package/src/src/viewer/scene/Bitmap/index.js +1 -0
  132. package/src/src/viewer/scene/CameraControl/CameraControl.js +1750 -0
  133. package/src/src/viewer/scene/CameraControl/lib/CameraUpdater.js +312 -0
  134. package/src/src/viewer/scene/CameraControl/lib/controllers/PanController.js +112 -0
  135. package/src/src/viewer/scene/CameraControl/lib/controllers/PickController.js +265 -0
  136. package/src/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +384 -0
  137. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +122 -0
  138. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +183 -0
  139. package/src/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +68 -0
  140. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +345 -0
  141. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +376 -0
  142. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +288 -0
  143. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +235 -0
  144. package/src/src/viewer/scene/Component.js +915 -0
  145. package/src/src/viewer/scene/Entity.js +502 -0
  146. package/src/src/viewer/scene/ImagePlane/ImagePlane.js +570 -0
  147. package/src/src/viewer/scene/ImagePlane/index.js +1 -0
  148. package/src/src/viewer/scene/LineSet/LineSet.js +163 -0
  149. package/src/src/viewer/scene/LineSet/index.js +1 -0
  150. package/src/src/viewer/scene/camera/Camera.js +912 -0
  151. package/src/src/viewer/scene/camera/CameraFlightAnimation.js +669 -0
  152. package/src/src/viewer/scene/camera/CameraPath.js +194 -0
  153. package/src/src/viewer/scene/camera/CameraPathAnimation.js +326 -0
  154. package/src/src/viewer/scene/camera/CustomProjection.js +149 -0
  155. package/src/src/viewer/scene/camera/Frustum.js +316 -0
  156. package/src/src/viewer/scene/camera/Ortho.js +286 -0
  157. package/src/src/viewer/scene/camera/Perspective.js +304 -0
  158. package/src/src/viewer/scene/camera/index.js +2 -0
  159. package/src/src/viewer/scene/canvas/Canvas.js +490 -0
  160. package/src/src/viewer/scene/canvas/Spinner.js +323 -0
  161. package/src/src/viewer/scene/constants/constants.js +371 -0
  162. package/src/src/viewer/scene/core.js +268 -0
  163. package/src/src/viewer/scene/geometry/Geometry.js +33 -0
  164. package/src/src/viewer/scene/geometry/ReadableGeometry.js +682 -0
  165. package/src/src/viewer/scene/geometry/VBOGeometry.js +319 -0
  166. package/src/src/viewer/scene/geometry/builders/buildBoxGeometry.js +238 -0
  167. package/src/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +106 -0
  168. package/src/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +271 -0
  169. package/src/src/viewer/scene/geometry/builders/buildGridGeometry.js +102 -0
  170. package/src/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +168 -0
  171. package/src/src/viewer/scene/geometry/builders/buildSphereGeometry.js +161 -0
  172. package/src/src/viewer/scene/geometry/builders/buildTorusGeometry.js +172 -0
  173. package/src/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +1721 -0
  174. package/src/src/viewer/scene/geometry/builders/index.js +8 -0
  175. package/src/src/viewer/scene/geometry/index.js +4 -0
  176. package/src/src/viewer/scene/geometry/loaders/index.js +2 -0
  177. package/src/src/viewer/scene/geometry/loaders/load3DSGeometry.js +103 -0
  178. package/src/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +130 -0
  179. package/src/src/viewer/scene/index.js +21 -0
  180. package/src/src/viewer/scene/input/Input.js +1333 -0
  181. package/src/src/viewer/scene/libs/k3d.js +1032 -0
  182. package/src/src/viewer/scene/lights/AmbientLight.js +175 -0
  183. package/src/src/viewer/scene/lights/CubeTexture.js +156 -0
  184. package/src/src/viewer/scene/lights/DirLight.js +314 -0
  185. package/src/src/viewer/scene/lights/Light.js +29 -0
  186. package/src/src/viewer/scene/lights/LightMap.js +77 -0
  187. package/src/src/viewer/scene/lights/PointLight.js +395 -0
  188. package/src/src/viewer/scene/lights/ReflectionMap.js +79 -0
  189. package/src/src/viewer/scene/lights/Shadow.js +138 -0
  190. package/src/src/viewer/scene/lights/index.js +5 -0
  191. package/src/src/viewer/scene/marker/Marker.js +383 -0
  192. package/src/src/viewer/scene/marker/SpriteMarker.js +356 -0
  193. package/src/src/viewer/scene/marker/index.js +2 -0
  194. package/src/src/viewer/scene/materials/EdgeMaterial.js +359 -0
  195. package/src/src/viewer/scene/materials/EmphasisMaterial.js +613 -0
  196. package/src/src/viewer/scene/materials/Fresnel.js +222 -0
  197. package/src/src/viewer/scene/materials/LambertMaterial.js +378 -0
  198. package/src/src/viewer/scene/materials/LinesMaterial.js +169 -0
  199. package/src/src/viewer/scene/materials/Material.js +39 -0
  200. package/src/src/viewer/scene/materials/MetallicMaterial.js +820 -0
  201. package/src/src/viewer/scene/materials/PhongMaterial.js +860 -0
  202. package/src/src/viewer/scene/materials/PointsMaterial.js +409 -0
  203. package/src/src/viewer/scene/materials/SpecularMaterial.js +807 -0
  204. package/src/src/viewer/scene/materials/Texture.js +513 -0
  205. package/src/src/viewer/scene/materials/index.js +8 -0
  206. package/src/src/viewer/scene/math/Frustum.js +118 -0
  207. package/src/src/viewer/scene/math/buildEdgeIndices.js +162 -0
  208. package/src/src/viewer/scene/math/geometryCompressionUtils.js +365 -0
  209. package/src/src/viewer/scene/math/index.js +3 -0
  210. package/src/src/viewer/scene/math/math.js +5386 -0
  211. package/src/src/viewer/scene/math/rtcCoords.js +139 -0
  212. package/src/src/viewer/scene/mementos/CameraMemento.js +200 -0
  213. package/src/src/viewer/scene/mementos/ModelMemento.js +263 -0
  214. package/src/src/viewer/scene/mementos/ObjectsMemento.js +259 -0
  215. package/src/src/viewer/scene/mementos/index.js +3 -0
  216. package/src/src/viewer/scene/mesh/Mesh.js +2202 -0
  217. package/src/src/viewer/scene/mesh/draw/DrawRenderer.js +996 -0
  218. package/src/src/viewer/scene/mesh/draw/DrawShaderSource.js +1570 -0
  219. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +259 -0
  220. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +159 -0
  221. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +286 -0
  222. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +262 -0
  223. package/src/src/viewer/scene/mesh/index.js +1 -0
  224. package/src/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +217 -0
  225. package/src/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +157 -0
  226. package/src/src/viewer/scene/mesh/pick/PickMeshRenderer.js +223 -0
  227. package/src/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +151 -0
  228. package/src/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +200 -0
  229. package/src/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +124 -0
  230. package/src/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
  231. package/src/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +98 -0
  232. package/src/src/viewer/scene/metriqs/Metriqs.js +259 -0
  233. package/src/src/viewer/scene/model/ENTITY_FLAGS.js +21 -0
  234. package/src/src/viewer/scene/model/PerformanceModel.js +26 -0
  235. package/src/src/viewer/scene/model/RENDER_PASSES.js +34 -0
  236. package/src/src/viewer/scene/model/SceneModel.js +4018 -0
  237. package/src/src/viewer/scene/model/SceneModelEntity.js +715 -0
  238. package/src/src/viewer/scene/model/SceneModelMesh.js +341 -0
  239. package/src/src/viewer/scene/model/SceneModelTexture.js +38 -0
  240. package/src/src/viewer/scene/model/SceneModelTextureSet.js +59 -0
  241. package/src/src/viewer/scene/model/SceneModelTransform.js +404 -0
  242. package/src/src/viewer/scene/model/VBOSceneModel.js +26 -0
  243. package/src/src/viewer/scene/model/calculateUniquePositions.js +126 -0
  244. package/src/src/viewer/scene/model/compression.js +227 -0
  245. package/src/src/viewer/scene/model/dtx/BindableDataTexture.js +31 -0
  246. package/src/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +27 -0
  247. package/src/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +891 -0
  248. package/src/src/viewer/scene/model/dtx/lines/DTXLinesState.js +46 -0
  249. package/src/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +411 -0
  250. package/src/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +49 -0
  251. package/src/src/viewer/scene/model/dtx/lines/rebucketPositions.js +208 -0
  252. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +389 -0
  253. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +65 -0
  254. package/src/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +1322 -0
  255. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +46 -0
  256. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +250 -0
  257. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +518 -0
  258. package/src/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +54 -0
  259. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +619 -0
  260. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +464 -0
  261. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +414 -0
  262. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +422 -0
  263. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +345 -0
  264. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +436 -0
  265. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +462 -0
  266. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +436 -0
  267. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +455 -0
  268. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +440 -0
  269. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +307 -0
  270. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +465 -0
  271. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +466 -0
  272. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +427 -0
  273. package/src/src/viewer/scene/model/index.js +5 -0
  274. package/src/src/viewer/scene/model/rebucketPositions.js +354 -0
  275. package/src/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
  276. package/src/src/viewer/scene/model/vbo/VBORenderer.js +646 -0
  277. package/src/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +699 -0
  278. package/src/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +19 -0
  279. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +316 -0
  280. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +114 -0
  281. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +99 -0
  282. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +124 -0
  283. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +311 -0
  284. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +309 -0
  285. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +24 -0
  286. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js +20 -0
  287. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +718 -0
  288. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +24 -0
  289. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +168 -0
  290. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +136 -0
  291. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +156 -0
  292. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +148 -0
  293. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +144 -0
  294. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +107 -0
  295. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +146 -0
  296. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +309 -0
  297. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +303 -0
  298. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +24 -0
  299. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +1257 -0
  300. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesEdgesColorRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js} +6 -2
  301. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesEdgesRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js} +6 -4
  302. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
  303. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesRenderers.js → src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js} +45 -45
  304. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js} +4 -3
  305. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesColorRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js} +2 -2
  306. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesColorTextureRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js} +2 -2
  307. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesDepthRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js} +2 -2
  308. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesFlatColorRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js} +2 -2
  309. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesNormalsRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js} +2 -2
  310. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesOcclusionRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js} +2 -2
  311. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPBRRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js} +2 -2
  312. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPickDepthRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js} +2 -2
  313. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPickMeshRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js} +2 -2
  314. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPickNormalsFlatRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js} +2 -2
  315. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPickNormalsRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js} +2 -2
  316. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesShadowRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js} +2 -2
  317. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesSilhouetteRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js} +3 -3
  318. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesSnapInitRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js} +1 -1
  319. package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesSnapRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js} +1 -1
  320. package/src/src/viewer/scene/model/vbo/float16.js +760 -0
  321. package/src/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +704 -0
  322. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +148 -0
  323. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +26 -0
  324. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +139 -0
  325. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +127 -0
  326. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +331 -0
  327. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +316 -0
  328. package/src/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +728 -0
  329. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +174 -0
  330. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +156 -0
  331. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +149 -0
  332. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +170 -0
  333. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +152 -0
  334. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +26 -0
  335. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +174 -0
  336. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +119 -0
  337. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +154 -0
  338. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +330 -0
  339. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +311 -0
  340. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +150 -0
  341. package/src/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +1190 -0
  342. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesEdgesColorRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js} +8 -4
  343. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesEdgesRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js} +8 -5
  344. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
  345. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesRenderers.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js} +45 -45
  346. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesColorRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js} +3 -3
  347. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesColorTextureRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js} +2 -2
  348. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesDepthRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js} +2 -2
  349. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesFlatColorRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js} +2 -2
  350. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesFlatNormalsRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js} +2 -2
  351. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOSceneModelTriangleInstancingRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js} +1 -1
  352. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesNormalsRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js} +2 -2
  353. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesOcclusionRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js} +2 -2
  354. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPBRRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js} +2 -2
  355. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPickDepthRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js} +2 -2
  356. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPickMeshRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js} +2 -2
  357. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPickNormalsFlatRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js} +2 -2
  358. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPickNormalsRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js} +2 -2
  359. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesShadowRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js} +2 -2
  360. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesSilhouetteRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js} +2 -2
  361. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesSnapInitRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js} +1 -1
  362. package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesSnapRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js} +1 -1
  363. package/src/src/viewer/scene/nodes/Node.js +1383 -0
  364. package/src/src/viewer/scene/nodes/index.js +1 -0
  365. package/src/src/viewer/scene/paths/CubicBezierCurve.js +194 -0
  366. package/src/src/viewer/scene/paths/Curve.js +183 -0
  367. package/src/src/viewer/scene/paths/Path.js +239 -0
  368. package/src/src/viewer/scene/paths/QuadraticBezierCurve.js +161 -0
  369. package/src/src/viewer/scene/paths/SplineCurve.js +133 -0
  370. package/src/src/viewer/scene/paths/index.js +5 -0
  371. package/src/src/viewer/scene/postfx/SAO.js +543 -0
  372. package/src/src/viewer/scene/scene/Scene.js +2802 -0
  373. package/src/src/viewer/scene/sectionPlane/SectionPlane.js +198 -0
  374. package/src/src/viewer/scene/sectionPlane/SectionPlaneCache.js +101 -0
  375. package/src/src/viewer/scene/sectionPlane/index.js +1 -0
  376. package/src/src/viewer/scene/skybox/Skybox.js +123 -0
  377. package/src/src/viewer/scene/skybox/index.js +1 -0
  378. package/src/src/viewer/scene/stats.js +44 -0
  379. package/src/src/viewer/scene/utils/Cache.js +29 -0
  380. package/src/src/viewer/scene/utils/FileLoader.js +161 -0
  381. package/src/src/viewer/scene/utils/Loader.js +55 -0
  382. package/src/src/viewer/scene/utils/LoadingManager.js +86 -0
  383. package/src/src/viewer/scene/utils/Map.js +45 -0
  384. package/src/src/viewer/scene/utils/Queue.js +56 -0
  385. package/src/src/viewer/scene/utils/WorkerPool.js +73 -0
  386. package/src/src/viewer/scene/utils/index.js +6 -0
  387. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +650 -0
  388. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +1 -0
  389. package/src/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +31 -0
  390. package/src/src/viewer/scene/utils/textureTranscoders/index.js +2 -0
  391. package/src/src/viewer/scene/utils.js +453 -0
  392. package/src/src/viewer/scene/viewport/Viewport.js +212 -0
  393. package/src/src/viewer/scene/webgl/ArrayBuf.js +121 -0
  394. package/src/src/viewer/scene/webgl/Attribute.js +23 -0
  395. package/src/src/viewer/scene/webgl/Drawable.js +270 -0
  396. package/src/src/viewer/scene/webgl/FrameContext.js +313 -0
  397. package/src/src/viewer/scene/webgl/PickResult.js +364 -0
  398. package/src/src/viewer/scene/webgl/Pickable.js +69 -0
  399. package/src/src/viewer/scene/webgl/Program.js +181 -0
  400. package/src/src/viewer/scene/webgl/RenderBuffer.js +378 -0
  401. package/src/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
  402. package/src/src/viewer/scene/webgl/RenderFlags.js +203 -0
  403. package/src/src/viewer/scene/webgl/RenderState.js +40 -0
  404. package/src/src/viewer/scene/webgl/Renderer.js +1781 -0
  405. package/src/src/viewer/scene/webgl/Sampler.js +18 -0
  406. package/src/src/viewer/scene/webgl/Shader.js +49 -0
  407. package/src/src/viewer/scene/webgl/Texture2D.js +442 -0
  408. package/src/src/viewer/scene/webgl/convertConstant.js +244 -0
  409. package/src/src/viewer/scene/webgl/getExtension.js +32 -0
  410. package/src/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +214 -0
  411. package/src/src/viewer/scene/webgl/occlusion/OcclusionTester.js +426 -0
  412. package/src/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
  413. package/src/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +376 -0
  414. package/src/src/viewer/scene/webgl/webglEnums.js +61 -0
  415. package/src/src/viewer/scene/webglInfo.js +47 -0
  416. package/src/viewer/scene/model/SceneModel.js +1 -1
  417. package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +1 -1
  418. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +131 -0
  419. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +135 -0
  420. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
  421. package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +375 -0
  422. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +34 -0
  423. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +238 -0
  424. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +270 -0
  425. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  426. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +235 -0
  427. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +139 -0
  428. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +125 -0
  429. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  430. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +144 -0
  431. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +130 -0
  432. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +121 -0
  433. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +131 -0
  434. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +107 -0
  435. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +136 -0
  436. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +311 -0
  437. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +308 -0
  438. package/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +1 -1
  439. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +136 -0
  440. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +137 -0
  441. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
  442. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +376 -0
  443. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +253 -0
  444. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +278 -0
  445. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  446. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +244 -0
  447. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +130 -0
  448. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +29 -0
  449. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +138 -0
  450. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +128 -0
  451. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  452. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +149 -0
  453. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +136 -0
  454. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +130 -0
  455. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +145 -0
  456. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +113 -0
  457. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +139 -0
  458. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +342 -0
  459. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +325 -0
  460. package/src/viewer/scene/webgl/Renderer.js +20 -19
  461. package/src/viewer/scene/model/vbo/batching/triangles/renderers/VBOSceneModelTriangleBatchingEdgesRenderer.js +0 -12
  462. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/VBOSceneModelTriangleInstancingEdgesRenderer.js +0 -12
@@ -0,0 +1,753 @@
1
+ import {Plugin} from "../../viewer/Plugin.js";
2
+ import {math} from "../../viewer/scene/math/math.js";
3
+ import {Scene} from "../../viewer/scene/scene/Scene.js";
4
+ import {DirLight} from "./../../viewer/scene/lights/DirLight.js";
5
+ import {Mesh} from "./../../viewer/scene/mesh/Mesh.js";
6
+ import {ReadableGeometry} from "../../viewer/scene/geometry/ReadableGeometry.js";
7
+ import {PhongMaterial} from "../../viewer/scene/materials/PhongMaterial.js";
8
+ import {Texture} from "../../viewer/scene/materials/Texture.js";
9
+ import {buildCylinderGeometry} from "../../viewer/scene/geometry/builders/buildCylinderGeometry.js";
10
+ import {CubeTextureCanvas} from "./CubeTextureCanvas.js";
11
+ import {ClampToEdgeWrapping} from "../../viewer/scene/constants/constants.js";
12
+
13
+ const tempVec3a = math.vec3();
14
+ const tempVec3b = math.vec3();
15
+ const tempMat4a = math.mat4();
16
+
17
+ /**
18
+ * {@link Viewer} plugin that lets us look at the entire {@link Scene} from along a chosen axis or diagonal.
19
+ *
20
+ * [<img src="https://user-images.githubusercontent.com/83100/55674490-c93c2e00-58b5-11e9-8a28-eb08876947c0.gif">](https://xeokit.github.io/xeokit-sdk/examples/#gizmos_NavCubePlugin)
21
+ *
22
+ * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#gizmos_NavCubePlugin)]
23
+ *
24
+ * ## Overview
25
+ *
26
+ * * Rotating the NavCube causes the Viewer's {@link Camera} to orbit its current
27
+ * point-of-interest. Conversely, orbiting the Camera causes the NavCube to rotate accordingly.
28
+ * * The faces of the NavCube are aligned with the Viewer's {@link Scene}'s World-space coordinate axis. Clicking on a face moves
29
+ * the Camera to look at the entire Scene along the corresponding axis. Clicking on an edge or a corner looks at
30
+ * the entire Scene along a diagonal.
31
+ * * The NavCube can be configured to either jump or fly the Camera to each new position. We can configure how tightly the
32
+ * NavCube fits the Scene to view, and when flying, we can configure how fast it flies. We can also configure whether the
33
+ * NavCube fits all objects to view, or just the currently visible objects. See below for a usage example.
34
+ * * Clicking the NavCube also sets {@link CameraControl#pivotPos} to the center of the fitted objects.
35
+ *
36
+ * ## Usage
37
+ *
38
+ * In the example below, we'll create a Viewer and add a NavCubePlugin, which will create a NavCube gizmo in the canvas
39
+ * with the given ID. Then we'll use the {@link XKTLoaderPlugin} to load a model into the Viewer's Scene. We can then
40
+ * use the NavCube to look at the model along each axis or diagonal.
41
+ *
42
+ * ````JavaScript
43
+ * import {Viewer, XKTLoaderPlugin, NavCubePlugin} from "xeokit-sdk.es.js";
44
+ *
45
+ * const viewer = new Viewer({
46
+ * canvasId: "myCanvas"
47
+ * });
48
+ *
49
+ * viewer.camera.eye = [-3.93, 2.85, 27.01];
50
+ * viewer.camera.look = [4.40, 3.72, 8.89];
51
+ * viewer.camera.up = [-0.01, 0.99, 0.03];
52
+ *
53
+ * const navCube = new NavCubePlugin(viewer, {
54
+ *
55
+ * canvasID: "myNavCubeCanvas",
56
+ *
57
+ * visible: true, // Initially visible (default)
58
+ *
59
+ * cameraFly: true, // Fly camera to each selected axis/diagonal
60
+ * cameraFitFOV: 45, // How much field-of-view the scene takes once camera has fitted it to view
61
+ * cameraFlyDuration: 0.5,// How long (in seconds) camera takes to fly to each new axis/diagonal
62
+ *
63
+ * fitVisible: false, // Fit whole scene, including invisible objects (default)
64
+ *
65
+ * synchProjection: false // Keep NavCube in perspective projection, even when camera switches to ortho (default)
66
+ * });
67
+ *
68
+ * const xktLoader = new XKTLoaderPlugin(viewer);
69
+ *
70
+ * const model = xktLoader.load({
71
+ * id: "myModel",
72
+ * src: "./models/xkt/Duplex.ifc.xkt",
73
+ * edges: true
74
+ * });
75
+ * ````
76
+ */
77
+ class NavCubePlugin extends Plugin {
78
+
79
+ /**
80
+ * @constructor
81
+ * @param {Viewer} viewer The Viewer.
82
+ * @param {Object} cfg NavCubePlugin configuration.
83
+ * @param {String} [cfg.id="NavCube"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.
84
+ * @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.
85
+ * @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.
86
+ * @param {Boolean} [cfg.visible=true] Initial visibility.
87
+ * @param {Boolean} [cfg.shadowVisible=true] Whether the shadow of the cube is visible.
88
+ * @param {String} [cfg.cameraFly=true] Whether the {@link Camera} flies or jumps to each selected axis or diagonal.
89
+ * @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.
90
+ * @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.
91
+ * @param {String} [cfg.color="lightgrey"] Custom uniform color for the faces of the NavCube.
92
+ * @param {String} [cfg.frontColor="#55FF55"] Custom color for the front face of the NavCube. Overrides ````color````.
93
+ * @param {String} [cfg.backColor="#55FF55"] Custom color for the back face of the NavCube. Overrides ````color````.
94
+ * @param {String} [cfg.leftColor="#FF5555"] Custom color for the left face of the NavCube. Overrides ````color````.
95
+ * @param {String} [cfg.rightColor="#FF5555"] Custom color for the right face of the NavCube. Overrides ````color````.
96
+ * @param {String} [cfg.topColor="#5555FF"] Custom color for the top face of the NavCube. Overrides ````color````.
97
+ * @param {String} [cfg.bottomColor="#5555FF"] Custom color for the bottom face of the NavCube. Overrides ````color````.
98
+ * @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.
99
+ * @param {String} [cfg.textColor="black"] Custom text color for labels of the NavCube.
100
+ * @param {Boolean} [cfg.fitVisible=false] Sets whether the axis, corner and edge-aligned views will fit the
101
+ * 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````.
102
+ * @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.
103
+ * @param {Boolean} [cfg.isProjectNorth] sets whether the NavCube switches between true north and project north - using the project north offset angle.
104
+ * @param {number} [cfg.projectNorthOffsetAngle] sets the NavCube project north offset angle - when the {@link isProjectNorth} is true.
105
+ */
106
+ constructor(viewer, cfg = {}) {
107
+
108
+ super("NavCube", viewer, cfg);
109
+
110
+ viewer.navCube = this;
111
+
112
+ var visible = true;
113
+
114
+ try {
115
+ this._navCubeScene = new Scene(viewer, {
116
+ canvasId: cfg.canvasId,
117
+ canvasElement: cfg.canvasElement,
118
+ transparent: true
119
+ });
120
+
121
+ this._navCubeCanvas = this._navCubeScene.canvas.canvas;
122
+
123
+ this._navCubeScene.input.keyboardEnabled = false; // Don't want keyboard input in the NavCube
124
+
125
+ } catch (error) {
126
+ this.error(error);
127
+ return;
128
+ }
129
+
130
+ const navCubeScene = this._navCubeScene;
131
+
132
+ navCubeScene.clearLights();
133
+
134
+ new DirLight(navCubeScene, {dir: [0.4, -0.4, 0.8], color: [0.8, 1.0, 1.0], intensity: 1.0, space: "view"});
135
+ new DirLight(navCubeScene, {dir: [-0.8, -0.3, -0.4], color: [0.8, 0.8, 0.8], intensity: 1.0, space: "view"});
136
+ new DirLight(navCubeScene, {dir: [0.8, -0.6, -0.8], color: [1.0, 1.0, 1.0], intensity: 1.0, space: "view"});
137
+
138
+ this._navCubeCamera = navCubeScene.camera;
139
+ this._navCubeCamera.ortho.scale = 7.0;
140
+ this._navCubeCamera.ortho.near = 0.1;
141
+ this._navCubeCamera.ortho.far = 2000;
142
+
143
+ navCubeScene.edgeMaterial.edgeColor = [0.2, 0.2, 0.2];
144
+ navCubeScene.edgeMaterial.edgeAlpha = 0.6;
145
+
146
+ this._zUp = Boolean(viewer.camera.zUp);
147
+
148
+ var self = this;
149
+
150
+ this.setIsProjectNorth(cfg.isProjectNorth);
151
+ this.setProjectNorthOffsetAngle(cfg.projectNorthOffsetAngle);
152
+
153
+ const rotateTrueNorth = (function () {
154
+ const trueNorthMatrix = math.mat4();
155
+ return function (dir, vec, dest) {
156
+ math.identityMat4(trueNorthMatrix);
157
+ math.rotationMat4v(dir * self._projectNorthOffsetAngle * math.DEGTORAD, [0, 1, 0], trueNorthMatrix);
158
+ return math.transformVec3(trueNorthMatrix, vec, dest)
159
+ }
160
+ }())
161
+
162
+ this._synchCamera = (function () {
163
+ var matrix = math.rotationMat4c(-90 * math.DEGTORAD, 1, 0, 0);
164
+ var eyeLookVec = math.vec3();
165
+ var eyeLookVecCube = math.vec3();
166
+ var upCube = math.vec3();
167
+ return function () {
168
+ var eye = viewer.camera.eye;
169
+ var look = viewer.camera.look;
170
+ var up = viewer.camera.up;
171
+ eyeLookVec = math.mulVec3Scalar(math.normalizeVec3(math.subVec3(eye, look, eyeLookVec)), 5);
172
+
173
+ if (self._isProjectNorth && self._projectNorthOffsetAngle) {
174
+ eyeLookVec = rotateTrueNorth(-1, eyeLookVec, tempVec3a);
175
+ up = rotateTrueNorth(-1, up, tempVec3b);
176
+ }
177
+
178
+ if (self._zUp) { // +Z up
179
+ math.transformVec3(matrix, eyeLookVec, eyeLookVecCube);
180
+ math.transformVec3(matrix, up, upCube);
181
+ self._navCubeCamera.look = [0, 0, 0];
182
+ self._navCubeCamera.eye = math.transformVec3(matrix, eyeLookVec, eyeLookVecCube);
183
+ self._navCubeCamera.up = math.transformPoint3(matrix, up, upCube);
184
+ } else { // +Y up
185
+ self._navCubeCamera.look = [0, 0, 0];
186
+ self._navCubeCamera.eye = eyeLookVec;
187
+ self._navCubeCamera.up = up;
188
+ }
189
+ };
190
+ }());
191
+
192
+ this._cubeTextureCanvas = new CubeTextureCanvas(viewer, navCubeScene, cfg);
193
+
194
+ this._cubeSampler = new Texture(navCubeScene, {
195
+ image: this._cubeTextureCanvas.getImage(),
196
+ flipY: true,
197
+ wrapS: ClampToEdgeWrapping,
198
+ wrapT: ClampToEdgeWrapping
199
+ });
200
+
201
+ this._cubeMesh = new Mesh(navCubeScene, {
202
+ geometry: new ReadableGeometry(navCubeScene, {
203
+ primitive: "triangles",
204
+ normals: [
205
+ 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,
206
+ 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,
207
+ 0, 0, -1, 0, 0, -1, 0, 0, -1
208
+ ],
209
+ positions: [
210
+ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1,
211
+ 1, -1, -1, 1, 1, -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1,
212
+ 1, 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1
213
+ ],
214
+ uv: [
215
+ 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,
216
+ 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,
217
+ 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
218
+ ],
219
+ indices: [
220
+ 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,
221
+ 18, 19, 20, 21, 22, 20, 22, 23
222
+ ]
223
+ }),
224
+ material: new PhongMaterial(navCubeScene, {
225
+ diffuse: [0.4, 0.4, 0.4],
226
+ specular: [0.4, 0.4, 0.4],
227
+ emissive: [.6, .6, .6],
228
+ diffuseMap: this._cubeSampler,
229
+ emissiveMap: this._cubeSampler
230
+ }),
231
+ visible: !!visible,
232
+ edges: true
233
+ });
234
+
235
+ this._shadow = cfg.shadowVisible === false ? null : new Mesh(navCubeScene, {
236
+ geometry: new ReadableGeometry(navCubeScene, buildCylinderGeometry({
237
+ center: [0, 0, 0],
238
+ radiusTop: 0.001,
239
+ radiusBottom: 1.4,
240
+ height: 0.01,
241
+ radialSegments: 20,
242
+ heightSegments: 1,
243
+ openEnded: true
244
+ })),
245
+ material: new PhongMaterial(navCubeScene, {
246
+ diffuse: [0.0, 0.0, 0.0], specular: [0, 0, 0], emissive: [0.0, 0.0, 0.0], alpha: 0.5
247
+ }),
248
+ position: [0, -1.5, 0],
249
+ visible: !!visible,
250
+ pickable: false,
251
+ backfaces: false
252
+ });
253
+
254
+ this._onCameraMatrix = viewer.camera.on("matrix", this._synchCamera);
255
+ this._onCameraWorldAxis = viewer.camera.on("worldAxis", () => {
256
+ if (viewer.camera.zUp) {
257
+ this._zUp = true;
258
+ this._cubeTextureCanvas.setZUp();
259
+ this._repaint();
260
+ this._synchCamera();
261
+ } else if (viewer.camera.yUp) {
262
+ this._zUp = false;
263
+ this._cubeTextureCanvas.setYUp();
264
+ this._repaint();
265
+ this._synchCamera();
266
+ }
267
+ });
268
+ this._onCameraFOV = viewer.camera.perspective.on("fov", (fov) => {
269
+ if (this._synchProjection) {
270
+ this._navCubeCamera.perspective.fov = fov;
271
+ }
272
+ });
273
+ this._onCameraProjection = viewer.camera.on("projection", (projection) => {
274
+ if (this._synchProjection) {
275
+ this._navCubeCamera.projection = (projection === "ortho" || projection === "perspective") ? projection : "perspective";
276
+ }
277
+ });
278
+
279
+ var lastAreaId = -1;
280
+
281
+ function actionMove(posX, posY) {
282
+ var yawInc = (posX - lastX) * -sensitivity;
283
+ var pitchInc = (posY - lastY) * -sensitivity;
284
+ yaw -= yawInc;
285
+ pitch -= pitchInc;
286
+ if (minPitch !== undefined && pitch < minPitch) {
287
+ pitch = minPitch;
288
+ }
289
+ if (maxPitch !== undefined && pitch > maxPitch) {
290
+ pitch = maxPitch;
291
+ }
292
+ viewer.camera.orbitYaw(yawInc);
293
+ viewer.camera.orbitPitch(-pitchInc);
294
+ lastX = posX;
295
+ lastY = posY;
296
+ }
297
+
298
+ function getCoordsWithinElement(event) {
299
+ var coords = [0, 0];
300
+ if (!event) {
301
+ event = window.event;
302
+ coords[0] = event.x;
303
+ coords[1] = event.y;
304
+ } else {
305
+ var element = event.target;
306
+ var totalOffsetLeft = 0;
307
+ var totalOffsetTop = 0;
308
+ while (element.offsetParent) {
309
+ totalOffsetLeft += element.offsetLeft;
310
+ totalOffsetTop += element.offsetTop;
311
+ element = element.offsetParent;
312
+ }
313
+ coords[0] = event.pageX - totalOffsetLeft;
314
+ coords[1] = event.pageY - totalOffsetTop;
315
+ }
316
+ return coords;
317
+ }
318
+
319
+ {
320
+ var downX = null;
321
+ var downY = null;
322
+ var down = false;
323
+ var over = false;
324
+
325
+ var yaw = 0;
326
+ var pitch = 0;
327
+ var minPitch = null;
328
+ var maxPitch = null;
329
+ var sensitivity = 0.5;
330
+
331
+ var lastX;
332
+ var lastY;
333
+
334
+
335
+ self._navCubeCanvas.addEventListener("mouseenter", self._onMouseEnter = function (e) {
336
+ over = true;
337
+ });
338
+
339
+
340
+ self._navCubeCanvas.addEventListener("mouseleave", self._onMouseLeave = function (e) {
341
+ over = false;
342
+ });
343
+
344
+ self._navCubeCanvas.addEventListener("mousedown", self._onMouseDown = function (e) {
345
+ if (e.which !== 1) {
346
+ return;
347
+ }
348
+ downX = e.x;
349
+ downY = e.y;
350
+ lastX = e.clientX;
351
+ lastY = e.clientY;
352
+ var canvasPos = getCoordsWithinElement(e);
353
+ var hit = navCubeScene.pick({
354
+ canvasPos: canvasPos
355
+ });
356
+ if (hit) {
357
+ down = true;
358
+
359
+ } else {
360
+ down = false;
361
+ }
362
+ });
363
+
364
+ document.addEventListener("mouseup", self._onMouseUp = function (e) {
365
+ if (e.which !== 1) {// Left button
366
+ return;
367
+ }
368
+ down = false;
369
+ if (downX === null) {
370
+ return;
371
+ }
372
+ var canvasPos = getCoordsWithinElement(e);
373
+ var hit = navCubeScene.pick({
374
+ canvasPos: canvasPos,
375
+ pickSurface: true
376
+ });
377
+ if (hit) {
378
+ if (hit.uv) {
379
+ var areaId = self._cubeTextureCanvas.getArea(hit.uv);
380
+ if (areaId >= 0) {
381
+ document.body.style.cursor = "pointer";
382
+ if (lastAreaId >= 0) {
383
+ self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);
384
+ self._repaint();
385
+ lastAreaId = -1;
386
+ }
387
+ if (areaId >= 0) {
388
+ self._cubeTextureCanvas.setAreaHighlighted(areaId, true);
389
+ lastAreaId = areaId;
390
+ self._repaint();
391
+ if (e.x < (downX - 3) || e.x > (downX + 3) || e.y < (downY - 3) || e.y > (downY + 3)) {
392
+ return;
393
+ }
394
+ var dir = self._cubeTextureCanvas.getAreaDir(areaId);
395
+ if (dir) {
396
+ var up = self._cubeTextureCanvas.getAreaUp(areaId);
397
+ if (self._isProjectNorth && self._projectNorthOffsetAngle) {
398
+ dir = rotateTrueNorth(+1, dir, tempVec3a);
399
+ up = rotateTrueNorth(+1, up, tempVec3b);
400
+ }
401
+ flyTo(dir, up, function () {
402
+ if (lastAreaId >= 0) {
403
+ self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);
404
+ self._repaint();
405
+ lastAreaId = -1;
406
+ }
407
+ document.body.style.cursor = "pointer";
408
+ if (lastAreaId >= 0) {
409
+ self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);
410
+ self._repaint();
411
+ lastAreaId = -1;
412
+ }
413
+ if (areaId >= 0) {
414
+ self._cubeTextureCanvas.setAreaHighlighted(areaId, false);
415
+ lastAreaId = -1;
416
+ self._repaint();
417
+ }
418
+ });
419
+ }
420
+ }
421
+ }
422
+ }
423
+ }
424
+ });
425
+
426
+ document.addEventListener("mousemove", self._onMouseMove = function (e) {
427
+ if (lastAreaId >= 0) {
428
+ self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);
429
+ self._repaint();
430
+ lastAreaId = -1;
431
+ }
432
+ if (e.buttons === 1 && !down) {
433
+ return;
434
+ }
435
+ if (down) {
436
+ var posX = e.clientX;
437
+ var posY = e.clientY;
438
+ document.body.style.cursor = "move";
439
+ actionMove(posX, posY);
440
+ return;
441
+ }
442
+ if (!over) {
443
+ return;
444
+ }
445
+ var canvasPos = getCoordsWithinElement(e);
446
+ var hit = navCubeScene.pick({
447
+ canvasPos: canvasPos,
448
+ pickSurface: true
449
+ });
450
+ if (hit) {
451
+ if (hit.uv) {
452
+ document.body.style.cursor = "pointer";
453
+ var areaId = self._cubeTextureCanvas.getArea(hit.uv);
454
+ if (areaId === lastAreaId) {
455
+ return;
456
+ }
457
+ if (lastAreaId >= 0) {
458
+ self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);
459
+ }
460
+ if (areaId >= 0) {
461
+ self._cubeTextureCanvas.setAreaHighlighted(areaId, true);
462
+ self._repaint();
463
+ lastAreaId = areaId;
464
+ }
465
+ }
466
+ } else {
467
+ document.body.style.cursor = "default";
468
+ if (lastAreaId >= 0) {
469
+ self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);
470
+ self._repaint();
471
+ lastAreaId = -1;
472
+ }
473
+ }
474
+ });
475
+
476
+ var flyTo = (function () {
477
+ var center = math.vec3();
478
+ return function (dir, up, ok) {
479
+ var aabb = self._fitVisible ? viewer.scene.getAABB(viewer.scene.visibleObjectIds) : viewer.scene.aabb;
480
+ var diag = math.getAABB3Diag(aabb);
481
+ math.getAABB3Center(aabb, center);
482
+ var dist = Math.abs(diag / Math.tan(self._cameraFitFOV * math.DEGTORAD));
483
+ viewer.cameraControl.pivotPos = center;
484
+ if (self._cameraFly) {
485
+ viewer.cameraFlight.flyTo({
486
+ look: center,
487
+ eye: [center[0] - (dist * dir[0]), center[1] - (dist * dir[1]), center[2] - (dist * dir[2])],
488
+ up: up || [0, 1, 0],
489
+ orthoScale: diag * 1.1,
490
+ fitFOV: self._cameraFitFOV,
491
+ duration: self._cameraFlyDuration
492
+ }, ok);
493
+ } else {
494
+ viewer.cameraFlight.jumpTo({
495
+ look: center,
496
+ eye: [center[0] - (dist * dir[0]), center[1] - (dist * dir[1]), center[2] - (dist * dir[2])],
497
+ up: up || [0, 1, 0],
498
+ orthoScale: diag * 1.1,
499
+ fitFOV: self._cameraFitFOV
500
+ }, ok);
501
+ }
502
+ };
503
+ })();
504
+ }
505
+
506
+ this._onUpdated = viewer.localeService.on("updated", () => {
507
+ this._cubeTextureCanvas.clear();
508
+ this._repaint();
509
+ });
510
+
511
+ this.setVisible(cfg.visible);
512
+ this.setCameraFitFOV(cfg.cameraFitFOV);
513
+ this.setCameraFly(cfg.cameraFly);
514
+ this.setCameraFlyDuration(cfg.cameraFlyDuration);
515
+ this.setFitVisible(cfg.fitVisible);
516
+ this.setSynchProjection(cfg.synchProjection);
517
+ }
518
+
519
+ send(name, value) {
520
+ switch (name) {
521
+ case "language":
522
+ this._cubeTextureCanvas.clear();
523
+ this._repaint(); // CubeTextureCanvas gets language from Viewer
524
+ break;
525
+ }
526
+ }
527
+
528
+ _repaint() {
529
+ const image = this._cubeTextureCanvas.getImage();
530
+ this._cubeMesh.material.diffuseMap.image = image;
531
+ this._cubeMesh.material.emissiveMap.image = image;
532
+ }
533
+
534
+ /**
535
+ * Sets if the NavCube is visible.
536
+ *
537
+ * @param {Boolean} visible Whether or not the NavCube is visible.
538
+ */
539
+ setVisible(visible = true) {
540
+ if (!this._navCubeCanvas) {
541
+ return;
542
+ }
543
+ this._cubeMesh.visible = visible;
544
+ if (this._shadow) {
545
+ this._shadow.visible = visible;
546
+ }
547
+ this._navCubeCanvas.style.visibility = visible ? "visible" : "hidden";
548
+ }
549
+
550
+ /**
551
+ * Gets if the NavCube is visible.
552
+ *
553
+ * @return {Boolean} True when the NavCube is visible.
554
+ */
555
+ getVisible() {
556
+ if (!this._navCubeCanvas) {
557
+ return false;
558
+ }
559
+ return this._cubeMesh.visible;
560
+ }
561
+
562
+
563
+ /**
564
+ * Sets whether the axis, corner and edge-aligned views will fit the
565
+ * view to the entire {@link Scene} or just to visible object-{@link Entity}s.
566
+ *
567
+ * Entitys are visible objects when {@link Entity#isObject} and {@link Entity#visible} are both ````true````.
568
+ *
569
+ * @param {Boolean} fitVisible Set ````true```` to fit only visible object-Entitys.
570
+ */
571
+ setFitVisible(fitVisible = false) {
572
+ this._fitVisible = fitVisible;
573
+ }
574
+
575
+ /**
576
+ * Gets whether the axis, corner and edge-aligned views will fit the
577
+ * view to the entire {@link Scene} or just to visible object-{@link Entity}s.
578
+ *
579
+ * Entitys are visible objects when {@link Entity#isObject} and {@link Entity#visible} are both ````true````.
580
+ *
581
+ * @return {Boolean} True when fitting only visible object-Entitys.
582
+ */
583
+ getFitVisible() {
584
+ return this._fitVisible;
585
+ }
586
+
587
+ /**
588
+ * Sets whether the {@link Camera} flies or jumps to each selected axis or diagonal.
589
+ *
590
+ * Default is ````true````, to fly.
591
+ *
592
+ * @param {Boolean} cameraFly Set ````true```` to fly, else ````false```` to jump.
593
+ */
594
+ setCameraFly(cameraFly = true) {
595
+ this._cameraFly = cameraFly;
596
+ }
597
+
598
+ /**
599
+ * Gets whether the {@link Camera} flies or jumps to each selected axis or diagonal.
600
+ *
601
+ * Default is ````true````, to fly.
602
+ *
603
+ * @returns {Boolean} Returns ````true```` to fly, else ````false```` to jump.
604
+ */
605
+ getCameraFly() {
606
+ return this._cameraFly;
607
+ }
608
+
609
+ /**
610
+ * Sets how much of the field-of-view, in degrees, that the {@link Scene} should
611
+ * fill the canvas when flying or jumping the {@link Camera} to each selected axis or diagonal.
612
+ *
613
+ * Default value is ````45````.
614
+ *
615
+ * @param {Number} cameraFitFOV New FOV value.
616
+ */
617
+ setCameraFitFOV(cameraFitFOV = 45) {
618
+ this._cameraFitFOV = cameraFitFOV;
619
+ }
620
+
621
+ /**
622
+ * Gets how much of the field-of-view, in degrees, that the {@link Scene} should
623
+ * fill the canvas when flying or jumping the {@link Camera} to each selected axis or diagonal.
624
+ *
625
+ * Default value is ````45````.
626
+ *
627
+ * @returns {Number} Current FOV value.
628
+ */
629
+ getCameraFitFOV() {
630
+ return this._cameraFitFOV;
631
+ }
632
+
633
+ /**
634
+ * When flying the {@link Camera} to each new axis or diagonal, sets how long, in seconds, that the Camera takes to get there.
635
+ *
636
+ * Default is ````0.5````.
637
+ *
638
+ * @param {Boolean} cameraFlyDuration Camera flight duration in seconds.
639
+ */
640
+ setCameraFlyDuration(cameraFlyDuration = 0.5) {
641
+ this._cameraFlyDuration = cameraFlyDuration;
642
+ }
643
+
644
+ /**
645
+ * When flying the {@link Camera} to each new axis or diagonal, gets how long, in seconds, that the Camera takes to get there.
646
+ *
647
+ * Default is ````0.5````.
648
+ *
649
+ * @returns {Boolean} Camera flight duration in seconds.
650
+ */
651
+ getCameraFlyDuration() {
652
+ return this._cameraFlyDuration;
653
+ }
654
+
655
+ /**
656
+ * Sets whether the NavCube switches between perspective and orthographic projections in synchrony with
657
+ * the {@link Camera}. When ````false````, the NavCube will always be rendered with perspective projection.
658
+ *
659
+ * @param {Boolean} synchProjection Set ````true```` to keep NavCube projection synchronized with {@link Camera#projection}.
660
+ */
661
+ setSynchProjection(synchProjection = false) {
662
+ this._synchProjection = synchProjection;
663
+ }
664
+
665
+ /**
666
+ * Gets whether the NavCube switches between perspective and orthographic projections in synchrony with
667
+ * the {@link Camera}. When ````false````, the NavCube will always be rendered with perspective projection.
668
+ *
669
+ * @return {Boolean} True when NavCube projection is synchronized with {@link Camera#projection}.
670
+ */
671
+ getSynchProjection() {
672
+ return this._synchProjection;
673
+ }
674
+
675
+ /**
676
+ * Sets whether the NavCube switches between project north and true north
677
+ *
678
+ * @param {Boolean} isProjectNorth Set ````true```` to use project north offset
679
+ */
680
+ setIsProjectNorth(isProjectNorth = false) {
681
+ this._isProjectNorth = isProjectNorth;
682
+ }
683
+
684
+ /**
685
+ * Gets whether the NavCube switches between project north and true north
686
+ *
687
+ * @return {Boolean} isProjectNorth when ````true```` - use project north offset
688
+ */
689
+ getIsProjectNorth() {
690
+ return this._isProjectNorth;
691
+ }
692
+
693
+ /**
694
+ * Sets the NavCube project north offset angle (used when {@link isProjectNorth} is ````true````
695
+ *
696
+ * @param {number} projectNorthOffsetAngle Set the vector offset for project north
697
+ */
698
+ setProjectNorthOffsetAngle(projectNorthOffsetAngle) {
699
+ this._projectNorthOffsetAngle = projectNorthOffsetAngle;
700
+ }
701
+
702
+ /**
703
+ * Gets the offset angle between project north and true north
704
+ *
705
+ * @return {number} projectNorthOffsetAngle
706
+ */
707
+ getProjectNorthOffsetAngle() {
708
+ return this._projectNorthOffsetAngle;
709
+ }
710
+
711
+ /**
712
+ * Destroys this NavCubePlugin.
713
+ *
714
+ * Does not destroy the canvas the NavCubePlugin was configured with.
715
+ */
716
+ destroy() {
717
+
718
+ if (this._navCubeCanvas) {
719
+
720
+ this.viewer.localeService.off(this._onUpdated);
721
+ this.viewer.camera.off(this._onCameraMatrix);
722
+ this.viewer.camera.off(this._onCameraWorldAxis);
723
+ this.viewer.camera.perspective.off(this._onCameraFOV);
724
+ this.viewer.camera.off(this._onCameraProjection);
725
+
726
+ this._navCubeCanvas.removeEventListener("mouseenter", this._onMouseEnter);
727
+ this._navCubeCanvas.removeEventListener("mouseleave", this._onMouseLeave);
728
+ this._navCubeCanvas.removeEventListener("mousedown", this._onMouseDown);
729
+
730
+ document.removeEventListener("mousemove", this._onMouseMove);
731
+ document.removeEventListener("mouseup", this._onMouseUp);
732
+
733
+ this._navCubeCanvas = null;
734
+ this._cubeTextureCanvas.destroy();
735
+ this._cubeTextureCanvas = null;
736
+
737
+ this._onMouseEnter = null;
738
+ this._onMouseLeave = null;
739
+ this._onMouseDown = null;
740
+ this._onMouseMove = null;
741
+ this._onMouseUp = null;
742
+ }
743
+
744
+ this._navCubeScene.destroy();
745
+ this._navCubeScene = null;
746
+ this._cubeMesh = null;
747
+ this._shadow = null;
748
+
749
+ super.destroy();
750
+ }
751
+ }
752
+
753
+ export {NavCubePlugin};