@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,1328 @@
1
+ import {math} from "../../viewer/scene/math/math.js";
2
+
3
+ import {buildCylinderGeometry} from "../../viewer/scene/geometry/builders/buildCylinderGeometry.js";
4
+ import {buildTorusGeometry} from "../../viewer/scene/geometry/builders/buildTorusGeometry.js";
5
+
6
+ import {ReadableGeometry} from "../../viewer/scene/geometry/ReadableGeometry.js";
7
+ import {PhongMaterial} from "../../viewer/scene/materials/PhongMaterial.js";
8
+ import {EmphasisMaterial} from "../../viewer/scene/materials/EmphasisMaterial.js";
9
+ import {Node} from "../../viewer/scene/nodes/Node.js";
10
+ import {Mesh} from "../../viewer/scene/mesh/Mesh.js";
11
+ import {buildSphereGeometry} from "../../viewer/scene/geometry/builders/buildSphereGeometry.js";
12
+ import {worldToRTCPos} from "../../viewer/scene/math/rtcCoords.js";
13
+
14
+ const zeroVec = new Float64Array([0, 0, 1]);
15
+ const quat = new Float64Array(4);
16
+
17
+ /**
18
+ * Controls a {@link SectionPlane} with mouse and touch input.
19
+ *
20
+ * @private
21
+ */
22
+ class Control {
23
+
24
+ /** @private */
25
+ constructor(plugin) {
26
+
27
+ /**
28
+ * ID of this Control.
29
+ *
30
+ * SectionPlaneControls are mapped by this ID in {@link SectionPlanesPlugin#sectionPlaneControls}.
31
+ *
32
+ * @property id
33
+ * @type {String|Number}
34
+ */
35
+ this.id = null;
36
+
37
+ this._viewer = plugin.viewer;
38
+
39
+ this._visible = false;
40
+ this._pos = math.vec3(); // Full-precision position of the center of the Control
41
+ this._origin = math.vec3();
42
+ this._rtcPos = math.vec3();
43
+
44
+ this._baseDir = math.vec3(); // Saves direction of clip plane when we start dragging an arrow or ring.
45
+ this._rootNode = null; // Root of Node graph that represents this control in the 3D scene
46
+ this._displayMeshes = null; // Meshes that are always visible
47
+ this._affordanceMeshes = null; // Meshes displayed momentarily for affordance
48
+
49
+ this._ignoreNextSectionPlaneDirUpdate = false;
50
+
51
+ this._createNodes();
52
+ this._bindEvents();
53
+ }
54
+
55
+ /**
56
+ * Called by SectionPlanesPlugin to assign this Control to a SectionPlane.
57
+ * SectionPlanesPlugin keeps SectionPlaneControls in a reuse pool.
58
+ * Call with a null or undefined value to disconnect the Control ffrom whatever SectionPlane it was assigned to.
59
+ * @private
60
+ */
61
+ _setSectionPlane(sectionPlane) {
62
+ if (this._sectionPlane) {
63
+ this._sectionPlane.off(this._onSectionPlanePos);
64
+ this._sectionPlane.off(this._onSectionPlaneDir);
65
+ this._onSectionPlanePos = null;
66
+ this._onSectionPlaneDir = null;
67
+ this._sectionPlane = null;
68
+ }
69
+ if (sectionPlane) {
70
+ this.id = sectionPlane.id;
71
+ this._setPos(sectionPlane.pos);
72
+ this._setDir(sectionPlane.dir);
73
+ this._sectionPlane = sectionPlane;
74
+ this._onSectionPlanePos = sectionPlane.on("pos", () => {
75
+ this._setPos(this._sectionPlane.pos);
76
+ });
77
+ this._onSectionPlaneDir = sectionPlane.on("dir", () => {
78
+ if (!this._ignoreNextSectionPlaneDirUpdate) {
79
+ this._setDir(this._sectionPlane.dir);
80
+ } else {
81
+ this._ignoreNextSectionPlaneDirUpdate = false;
82
+ }
83
+ });
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Gets the {@link SectionPlane} controlled by this Control.
89
+ * @returns {SectionPlane} The SectionPlane.
90
+ */
91
+ get sectionPlane() {
92
+ return this._sectionPlane;
93
+ }
94
+
95
+ /** @private */
96
+ _setPos(xyz) {
97
+
98
+ this._pos.set(xyz);
99
+
100
+ worldToRTCPos(this._pos, this._origin, this._rtcPos);
101
+
102
+ this._rootNode.origin = this._origin;
103
+ this._rootNode.position = this._rtcPos;
104
+ }
105
+
106
+ /** @private */
107
+ _setDir(xyz) {
108
+ this._baseDir.set(xyz);
109
+ this._rootNode.quaternion = math.vec3PairToQuaternion(zeroVec, xyz, quat);
110
+ }
111
+
112
+ _setSectionPlaneDir(dir) {
113
+ if (this._sectionPlane) {
114
+ this._ignoreNextSectionPlaneDirUpdate = true;
115
+ this._sectionPlane.dir = dir;
116
+ }
117
+ }
118
+
119
+ /**
120
+ * Sets if this Control is visible.
121
+ *
122
+ * @type {Boolean}
123
+ */
124
+ setVisible(visible = true) {
125
+ if (this._visible === visible) {
126
+ return;
127
+ }
128
+ this._visible = visible;
129
+ var id;
130
+ for (id in this._displayMeshes) {
131
+ if (this._displayMeshes.hasOwnProperty(id)) {
132
+ this._displayMeshes[id].visible = visible;
133
+ }
134
+ }
135
+ if (!visible) {
136
+ for (id in this._affordanceMeshes) {
137
+ if (this._affordanceMeshes.hasOwnProperty(id)) {
138
+ this._affordanceMeshes[id].visible = visible;
139
+ }
140
+ }
141
+ }
142
+ }
143
+
144
+ /**
145
+ * Gets if this Control is visible.
146
+ *
147
+ * @type {Boolean}
148
+ */
149
+ getVisible() {
150
+ return this._visible;
151
+ }
152
+
153
+ /**
154
+ * Sets if this Control is culled. This is called by SectionPlanesPlugin to
155
+ * temporarily hide the Control while a snapshot is being taken by Viewer#getSnapshot().
156
+ * @param culled
157
+ */
158
+ setCulled(culled) {
159
+ var id;
160
+ for (id in this._displayMeshes) {
161
+ if (this._displayMeshes.hasOwnProperty(id)) {
162
+ this._displayMeshes[id].culled = culled;
163
+ }
164
+ }
165
+ if (!culled) {
166
+ for (id in this._affordanceMeshes) {
167
+ if (this._affordanceMeshes.hasOwnProperty(id)) {
168
+ this._affordanceMeshes[id].culled = culled;
169
+ }
170
+ }
171
+ }
172
+ }
173
+
174
+ /**
175
+ * Builds the Entities that represent this Control.
176
+ * @private
177
+ */
178
+ _createNodes() {
179
+
180
+ const NO_STATE_INHERIT = false;
181
+ const scene = this._viewer.scene;
182
+ const radius = 1.0;
183
+ const handleTubeRadius = 0.06;
184
+ const hoopRadius = radius - 0.2;
185
+ const tubeRadius = 0.01;
186
+ const arrowRadius = 0.07;
187
+
188
+ this._rootNode = new Node(scene, {
189
+ position: [0, 0, 0],
190
+ scale: [5, 5, 5]
191
+ });
192
+
193
+ const rootNode = this._rootNode;
194
+
195
+ const shapes = {// Reusable geometries
196
+
197
+ arrowHead: new ReadableGeometry(rootNode, buildCylinderGeometry({
198
+ radiusTop: 0.001,
199
+ radiusBottom: arrowRadius,
200
+ radialSegments: 32,
201
+ heightSegments: 1,
202
+ height: 0.2,
203
+ openEnded: false
204
+ })),
205
+
206
+ arrowHeadBig: new ReadableGeometry(rootNode, buildCylinderGeometry({
207
+ radiusTop: 0.001,
208
+ radiusBottom: 0.09,
209
+ radialSegments: 32,
210
+ heightSegments: 1,
211
+ height: 0.25,
212
+ openEnded: false
213
+ })),
214
+
215
+ arrowHeadHandle: new ReadableGeometry(rootNode, buildCylinderGeometry({
216
+ radiusTop: 0.09,
217
+ radiusBottom: 0.09,
218
+ radialSegments: 8,
219
+ heightSegments: 1,
220
+ height: 0.37,
221
+ openEnded: false
222
+ })),
223
+
224
+ curve: new ReadableGeometry(rootNode, buildTorusGeometry({
225
+ radius: hoopRadius,
226
+ tube: tubeRadius,
227
+ radialSegments: 64,
228
+ tubeSegments: 14,
229
+ arc: (Math.PI * 2.0) / 4.0
230
+ })),
231
+
232
+ curveHandle: new ReadableGeometry(rootNode, buildTorusGeometry({
233
+ radius: hoopRadius,
234
+ tube: handleTubeRadius,
235
+ radialSegments: 64,
236
+ tubeSegments: 14,
237
+ arc: (Math.PI * 2.0) / 4.0
238
+ })),
239
+
240
+ hoop: new ReadableGeometry(rootNode, buildTorusGeometry({
241
+ radius: hoopRadius,
242
+ tube: tubeRadius,
243
+ radialSegments: 64,
244
+ tubeSegments: 8,
245
+ arc: (Math.PI * 2.0)
246
+ })),
247
+
248
+ axis: new ReadableGeometry(rootNode, buildCylinderGeometry({
249
+ radiusTop: tubeRadius,
250
+ radiusBottom: tubeRadius,
251
+ radialSegments: 20,
252
+ heightSegments: 1,
253
+ height: radius,
254
+ openEnded: false
255
+ })),
256
+
257
+ axisHandle: new ReadableGeometry(rootNode, buildCylinderGeometry({
258
+ radiusTop: 0.08,
259
+ radiusBottom: 0.08,
260
+ radialSegments: 20,
261
+ heightSegments: 1,
262
+ height: radius,
263
+ openEnded: false
264
+ }))
265
+ };
266
+
267
+ const materials = { // Reusable materials
268
+
269
+ pickable: new PhongMaterial(rootNode, { // Invisible material for pickable handles, which define a pickable 3D area
270
+ diffuse: [1, 1, 0],
271
+ alpha: 0, // Invisible
272
+ alphaMode: "blend"
273
+ }),
274
+
275
+ red: new PhongMaterial(rootNode, {
276
+ diffuse: [1, 0.0, 0.0],
277
+ emissive: [1, 0.0, 0.0],
278
+ ambient: [0.0, 0.0, 0.0],
279
+ specular: [.6, .6, .3],
280
+ shininess: 80,
281
+ lineWidth: 2
282
+ }),
283
+
284
+ highlightRed: new EmphasisMaterial(rootNode, { // Emphasis for red rotation affordance hoop
285
+ edges: false,
286
+ fill: true,
287
+ fillColor: [1, 0, 0],
288
+ fillAlpha: 0.6
289
+ }),
290
+
291
+ green: new PhongMaterial(rootNode, {
292
+ diffuse: [0.0, 1, 0.0],
293
+ emissive: [0.0, 1, 0.0],
294
+ ambient: [0.0, 0.0, 0.0],
295
+ specular: [.6, .6, .3],
296
+ shininess: 80,
297
+ lineWidth: 2
298
+ }),
299
+
300
+ highlightGreen: new EmphasisMaterial(rootNode, { // Emphasis for green rotation affordance hoop
301
+ edges: false,
302
+ fill: true,
303
+ fillColor: [0, 1, 0],
304
+ fillAlpha: 0.6
305
+ }),
306
+
307
+ blue: new PhongMaterial(rootNode, {
308
+ diffuse: [0.0, 0.0, 1],
309
+ emissive: [0.0, 0.0, 1],
310
+ ambient: [0.0, 0.0, 0.0],
311
+ specular: [.6, .6, .3],
312
+ shininess: 80,
313
+ lineWidth: 2
314
+ }),
315
+
316
+ highlightBlue: new EmphasisMaterial(rootNode, { // Emphasis for blue rotation affordance hoop
317
+ edges: false,
318
+ fill: true,
319
+ fillColor: [0, 0, 1],
320
+ fillAlpha: 0.2
321
+ }),
322
+
323
+ center: new PhongMaterial(rootNode, {
324
+ diffuse: [0.0, 0.0, 0.0],
325
+ emissive: [0, 0, 0],
326
+ ambient: [0.0, 0.0, 0.0],
327
+ specular: [.6, .6, .3],
328
+ shininess: 80
329
+ }),
330
+
331
+ highlightBall: new EmphasisMaterial(rootNode, {
332
+ edges: false,
333
+ fill: true,
334
+ fillColor: [0.5, 0.5, 0.5],
335
+ fillAlpha: 0.5,
336
+ vertices: false
337
+ }),
338
+
339
+ highlightPlane: new EmphasisMaterial(rootNode, {
340
+ edges: true,
341
+ edgeWidth: 3,
342
+ fill: false,
343
+ fillColor: [0.5, 0.5, .5],
344
+ fillAlpha: 0.5,
345
+ vertices: false
346
+ })
347
+ };
348
+
349
+ this._displayMeshes = {
350
+
351
+ plane: rootNode.addChild(new Mesh(rootNode, {
352
+ geometry: new ReadableGeometry(rootNode, {
353
+ primitive: "triangles",
354
+ positions: [
355
+ 0.5, 0.5, 0.0, 0.5, -0.5, 0.0, // 0
356
+ -0.5, -0.5, 0.0, -0.5, 0.5, 0.0, // 1
357
+ 0.5, 0.5, -0.0, 0.5, -0.5, -0.0, // 2
358
+ -0.5, -0.5, -0.0, -0.5, 0.5, -0.0 // 3
359
+ ],
360
+ indices: [0, 1, 2, 2, 3, 0]
361
+ }),
362
+ material: new PhongMaterial(rootNode, {
363
+ emissive: [0, 0.0, 0],
364
+ diffuse: [0, 0, 0],
365
+ backfaces: true
366
+ }),
367
+ opacity: 0.6,
368
+ ghosted: true,
369
+ ghostMaterial: new EmphasisMaterial(rootNode, {
370
+ edges: false,
371
+ filled: true,
372
+ fillColor: [1, 1, 0],
373
+ edgeColor: [0, 0, 0],
374
+ fillAlpha: 0.1,
375
+ backfaces: true
376
+ }),
377
+ pickable: false,
378
+ collidable: true,
379
+ clippable: false,
380
+ visible: false,
381
+ scale: [2.4, 2.4, 1]
382
+ }), NO_STATE_INHERIT),
383
+
384
+ planeFrame: rootNode.addChild(new Mesh(rootNode, { // Visible frame
385
+ geometry: new ReadableGeometry(rootNode, buildTorusGeometry({
386
+ center: [0, 0, 0],
387
+ radius: 1.7,
388
+ tube: tubeRadius * 2,
389
+ radialSegments: 4,
390
+ tubeSegments: 4,
391
+ arc: Math.PI * 2.0
392
+ })),
393
+ material: new PhongMaterial(rootNode, {
394
+ emissive: [0, 0, 0],
395
+ diffuse: [0, 0, 0],
396
+ specular: [0, 0, 0],
397
+ shininess: 0
398
+ }),
399
+ //highlighted: true,
400
+ highlightMaterial: new EmphasisMaterial(rootNode, {
401
+ edges: false,
402
+ edgeColor: [0.0, 0.0, 0.0],
403
+ filled: true,
404
+ fillColor: [0.8, 0.8, 0.8],
405
+ fillAlpha: 1.0
406
+ }),
407
+ pickable: false,
408
+ collidable: false,
409
+ clippable: false,
410
+ visible: false,
411
+ scale: [1, 1, .1],
412
+ rotation: [0, 0, 45]
413
+ }), NO_STATE_INHERIT),
414
+
415
+ //----------------------------------------------------------------------------------------------------------
416
+ //
417
+ //----------------------------------------------------------------------------------------------------------
418
+
419
+ xCurve: rootNode.addChild(new Mesh(rootNode, { // Red hoop about Y-axis
420
+ geometry: shapes.curve,
421
+ material: materials.red,
422
+ matrix: (function () {
423
+ const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());
424
+ const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
425
+ return math.mulMat4(rotate1, rotate2, math.identityMat4());
426
+ })(),
427
+ pickable: false,
428
+ collidable: true,
429
+ clippable: false,
430
+ backfaces: true,
431
+ visible: false
432
+ }), NO_STATE_INHERIT),
433
+
434
+ xCurveHandle: rootNode.addChild(new Mesh(rootNode, { // Red hoop about Y-axis
435
+ geometry: shapes.curveHandle,
436
+ material: materials.pickable,
437
+ matrix: (function () {
438
+ const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());
439
+ const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
440
+ return math.mulMat4(rotate1, rotate2, math.identityMat4());
441
+ })(),
442
+ pickable: true,
443
+ collidable: true,
444
+ clippable: false,
445
+ backfaces: true,
446
+ visible: false
447
+ }), NO_STATE_INHERIT),
448
+
449
+ xCurveArrow1: rootNode.addChild(new Mesh(rootNode, {
450
+ geometry: shapes.arrowHead,
451
+ material: materials.red,
452
+ matrix: (function () {
453
+ const translate = math.translateMat4c(0., -0.07, -0.8, math.identityMat4());
454
+ const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());
455
+ const rotate = math.rotationMat4v(0 * math.DEGTORAD, [0, 0, 1], math.identityMat4());
456
+ return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());
457
+ })(),
458
+ pickable: true,
459
+ collidable: true,
460
+ clippable: false,
461
+ visible: false
462
+ }), NO_STATE_INHERIT),
463
+
464
+ xCurveArrow2: rootNode.addChild(new Mesh(rootNode, {
465
+ geometry: shapes.arrowHead,
466
+ material: materials.red,
467
+ matrix: (function () {
468
+ const translate = math.translateMat4c(0.0, -0.8, -0.07, math.identityMat4());
469
+ const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());
470
+ const rotate = math.rotationMat4v(90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
471
+ return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());
472
+ })(),
473
+ pickable: true,
474
+ collidable: true,
475
+ clippable: false,
476
+ visible: false
477
+ }), NO_STATE_INHERIT),
478
+
479
+ //----------------------------------------------------------------------------------------------------------
480
+ //
481
+ //----------------------------------------------------------------------------------------------------------
482
+
483
+ yCurve: rootNode.addChild(new Mesh(rootNode, {
484
+ geometry: shapes.curve,
485
+ material: materials.green,
486
+ rotation: [-90, 0, 0],
487
+ pickable: false,
488
+ collidable: true,
489
+ clippable: false,
490
+ backfaces: true,
491
+ visible: false
492
+ }), NO_STATE_INHERIT),
493
+
494
+ yCurveHandle: rootNode.addChild(new Mesh(rootNode, {
495
+ geometry: shapes.curveHandle,
496
+ material: materials.pickable,
497
+ rotation: [-90, 0, 0],
498
+ pickable: true,
499
+ collidable: true,
500
+ clippable: false,
501
+ backfaces: true,
502
+ visible: false
503
+ }), NO_STATE_INHERIT),
504
+
505
+ yCurveArrow1: rootNode.addChild(new Mesh(rootNode, {
506
+ geometry: shapes.arrowHead,
507
+ material: materials.green,
508
+ matrix: (function () {
509
+ const translate = math.translateMat4c(0.07, 0, -0.8, math.identityMat4());
510
+ const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());
511
+ const rotate = math.rotationMat4v(90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());
512
+ return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());
513
+ })(),
514
+ pickable: true,
515
+ collidable: true,
516
+ clippable: false,
517
+ visible: false
518
+ }), NO_STATE_INHERIT),
519
+
520
+ yCurveArrow2: rootNode.addChild(new Mesh(rootNode, {
521
+ geometry: shapes.arrowHead,
522
+ material: materials.green,
523
+ matrix: (function () {
524
+ const translate = math.translateMat4c(0.8, 0.0, -0.07, math.identityMat4());
525
+ const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());
526
+ const rotate = math.rotationMat4v(90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
527
+ return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());
528
+ })(),
529
+ pickable: true,
530
+ collidable: true,
531
+ clippable: false,
532
+ visible: false
533
+ }), NO_STATE_INHERIT),
534
+
535
+ //----------------------------------------------------------------------------------------------------------
536
+ //
537
+ //----------------------------------------------------------------------------------------------------------
538
+
539
+ zCurve: rootNode.addChild(new Mesh(rootNode, { // Blue hoop about Z-axis
540
+ geometry: shapes.curve,
541
+ material: materials.blue,
542
+ matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),
543
+ pickable: false,
544
+ collidable: true,
545
+ clippable: false,
546
+ visible: false
547
+ }), NO_STATE_INHERIT),
548
+
549
+ zCurveHandle: rootNode.addChild(new Mesh(rootNode, {
550
+ geometry: shapes.curveHandle,
551
+ material: materials.pickable,
552
+ matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),
553
+ pickable: true,
554
+ collidable: true,
555
+ clippable: false,
556
+ visible: false
557
+ }), NO_STATE_INHERIT),
558
+
559
+ zCurveCurveArrow1: rootNode.addChild(new Mesh(rootNode, {
560
+ geometry: shapes.arrowHead,
561
+ material: materials.blue,
562
+ matrix: (function () {
563
+ const translate = math.translateMat4c(.8, -0.07, 0, math.identityMat4());
564
+ const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());
565
+ return math.mulMat4(translate, scale, math.identityMat4());
566
+ })(),
567
+ pickable: true,
568
+ collidable: true,
569
+ clippable: false,
570
+ visible: false
571
+ }), NO_STATE_INHERIT),
572
+
573
+ zCurveArrow2: rootNode.addChild(new Mesh(rootNode, {
574
+ geometry: shapes.arrowHead,
575
+ material: materials.blue,
576
+ matrix: (function () {
577
+ const translate = math.translateMat4c(.05, -0.8, 0, math.identityMat4());
578
+ const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());
579
+ const rotate = math.rotationMat4v(90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());
580
+ return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());
581
+ })(),
582
+ pickable: true,
583
+ collidable: true,
584
+ clippable: false,
585
+ visible: false
586
+ }), NO_STATE_INHERIT),
587
+
588
+ //----------------------------------------------------------------------------------------------------------
589
+ //
590
+ //----------------------------------------------------------------------------------------------------------
591
+
592
+ center: rootNode.addChild(new Mesh(rootNode, {
593
+ geometry: new ReadableGeometry(rootNode, buildSphereGeometry({
594
+ radius: 0.05
595
+ })),
596
+ material: materials.center,
597
+ pickable: false,
598
+ collidable: true,
599
+ clippable: false,
600
+ visible: false
601
+ }), NO_STATE_INHERIT),
602
+
603
+ //----------------------------------------------------------------------------------------------------------
604
+ //
605
+ //----------------------------------------------------------------------------------------------------------
606
+
607
+ xAxisArrow: rootNode.addChild(new Mesh(rootNode, {
608
+ geometry: shapes.arrowHead,
609
+ material: materials.red,
610
+ matrix: (function () {
611
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
612
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());
613
+ return math.mulMat4(rotate, translate, math.identityMat4());
614
+ })(),
615
+ pickable: false,
616
+ collidable: true,
617
+ clippable: false,
618
+ visible: false
619
+ }), NO_STATE_INHERIT),
620
+
621
+ xAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {
622
+ geometry: shapes.arrowHeadHandle,
623
+ material: materials.pickable,
624
+ matrix: (function () {
625
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
626
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());
627
+ return math.mulMat4(rotate, translate, math.identityMat4());
628
+ })(),
629
+ pickable: true,
630
+ collidable: true,
631
+ clippable: false,
632
+ visible: false
633
+ }), NO_STATE_INHERIT),
634
+
635
+ xAxis: rootNode.addChild(new Mesh(rootNode, {
636
+ geometry: shapes.axis,
637
+ material: materials.red,
638
+ matrix: (function () {
639
+ const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());
640
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());
641
+ return math.mulMat4(rotate, translate, math.identityMat4());
642
+ })(),
643
+ pickable: false,
644
+ collidable: true,
645
+ clippable: false,
646
+ visible: false
647
+ }), NO_STATE_INHERIT),
648
+
649
+ xAxisHandle: rootNode.addChild(new Mesh(rootNode, {
650
+ geometry: shapes.axisHandle,
651
+ material: materials.pickable,
652
+ matrix: (function () {
653
+ const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());
654
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());
655
+ return math.mulMat4(rotate, translate, math.identityMat4());
656
+ })(),
657
+ pickable: true,
658
+ collidable: true,
659
+ clippable: false,
660
+ visible: false
661
+ }), NO_STATE_INHERIT),
662
+
663
+ //----------------------------------------------------------------------------------------------------------
664
+ //
665
+ //----------------------------------------------------------------------------------------------------------
666
+
667
+ yAxisArrow: rootNode.addChild(new Mesh(rootNode, {
668
+ geometry: shapes.arrowHead,
669
+ material: materials.green,
670
+ matrix: (function () {
671
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
672
+ const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
673
+ return math.mulMat4(rotate, translate, math.identityMat4());
674
+ })(),
675
+ pickable: false,
676
+ collidable: true,
677
+ clippable: false,
678
+ visible: false
679
+ }), NO_STATE_INHERIT),
680
+
681
+ yAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {
682
+ geometry: shapes.arrowHeadHandle,
683
+ material: materials.pickable,
684
+ matrix: (function () {
685
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
686
+ const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
687
+ return math.mulMat4(rotate, translate, math.identityMat4());
688
+ })(),
689
+ pickable: true,
690
+ collidable: true,
691
+ clippable: false,
692
+ visible: false,
693
+ opacity: 0.2
694
+ }), NO_STATE_INHERIT),
695
+
696
+ yShaft: rootNode.addChild(new Mesh(rootNode, {
697
+ geometry: shapes.axis,
698
+ material: materials.green,
699
+ position: [0, -radius / 2, 0],
700
+ pickable: false,
701
+ collidable: true,
702
+ clippable: false,
703
+ visible: false
704
+ }), NO_STATE_INHERIT),
705
+
706
+ yShaftHandle: rootNode.addChild(new Mesh(rootNode, {
707
+ geometry: shapes.axisHandle,
708
+ material: materials.pickable,
709
+ position: [0, -radius / 2, 0],
710
+ pickable: true,
711
+ collidable: true,
712
+ clippable: false,
713
+ visible: false
714
+ }), NO_STATE_INHERIT),
715
+
716
+ //----------------------------------------------------------------------------------------------------------
717
+ //
718
+ //----------------------------------------------------------------------------------------------------------
719
+
720
+ zAxisArrow: rootNode.addChild(new Mesh(rootNode, {
721
+ geometry: shapes.arrowHead,
722
+ material: materials.blue,
723
+ matrix: (function () {
724
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
725
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());
726
+ return math.mulMat4(rotate, translate, math.identityMat4());
727
+ })(),
728
+ pickable: false,
729
+ collidable: true,
730
+ clippable: false,
731
+ visible: false
732
+ }), NO_STATE_INHERIT),
733
+
734
+ zAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {
735
+ geometry: shapes.arrowHeadHandle,
736
+ material: materials.pickable,
737
+ matrix: (function () {
738
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
739
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());
740
+ return math.mulMat4(rotate, translate, math.identityMat4());
741
+ })(),
742
+ pickable: true,
743
+ collidable: true,
744
+ clippable: false,
745
+ visible: false
746
+ }), NO_STATE_INHERIT),
747
+
748
+
749
+ zShaft: rootNode.addChild(new Mesh(rootNode, {
750
+ geometry: shapes.axis,
751
+ material: materials.blue,
752
+ matrix: (function () {
753
+ const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());
754
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
755
+ return math.mulMat4(rotate, translate, math.identityMat4());
756
+ })(),
757
+ clippable: false,
758
+ pickable: false,
759
+ collidable: true,
760
+ visible: false
761
+ }), NO_STATE_INHERIT),
762
+
763
+ zAxisHandle: rootNode.addChild(new Mesh(rootNode, {
764
+ geometry: shapes.axisHandle,
765
+ material: materials.pickable,
766
+ matrix: (function () {
767
+ const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());
768
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
769
+ return math.mulMat4(rotate, translate, math.identityMat4());
770
+ })(),
771
+ clippable: false,
772
+ pickable: true,
773
+ collidable: true,
774
+ visible: false
775
+ }), NO_STATE_INHERIT)
776
+ };
777
+
778
+ this._affordanceMeshes = {
779
+
780
+ planeFrame: rootNode.addChild(new Mesh(rootNode, {
781
+ geometry: new ReadableGeometry(rootNode, buildTorusGeometry({
782
+ center: [0, 0, 0],
783
+ radius: 2,
784
+ tube: tubeRadius,
785
+ radialSegments: 4,
786
+ tubeSegments: 4,
787
+ arc: Math.PI * 2.0
788
+ })),
789
+ material: new PhongMaterial(rootNode, {
790
+ ambient: [1, 1, 1],
791
+ diffuse: [0, 0, 0],
792
+ emissive: [1, 1, 0]
793
+ }),
794
+ highlighted: true,
795
+ highlightMaterial: new EmphasisMaterial(rootNode, {
796
+ edges: false,
797
+ filled: true,
798
+ fillColor: [1, 1, 0],
799
+ fillAlpha: 1.0
800
+ }),
801
+ pickable: false,
802
+ collidable: false,
803
+ clippable: false,
804
+ visible: false,
805
+ scale: [1, 1, 1],
806
+ rotation: [0, 0, 45]
807
+ }), NO_STATE_INHERIT),
808
+
809
+ xHoop: rootNode.addChild(new Mesh(rootNode, { // Full
810
+ geometry: shapes.hoop,
811
+ material: materials.red,
812
+ highlighted: true,
813
+ highlightMaterial: materials.highlightRed,
814
+ matrix: (function () {
815
+ const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());
816
+ const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
817
+ return math.mulMat4(rotate1, rotate2, math.identityMat4());
818
+ })(),
819
+ pickable: false,
820
+ collidable: true,
821
+ clippable: false,
822
+ visible: false
823
+ }), NO_STATE_INHERIT),
824
+
825
+ yHoop: rootNode.addChild(new Mesh(rootNode, {
826
+ geometry: shapes.hoop,
827
+ material: materials.green,
828
+ highlighted: true,
829
+ highlightMaterial: materials.highlightGreen,
830
+ rotation: [-90, 0, 0],
831
+ pickable: false,
832
+ collidable: true,
833
+ clippable: false,
834
+ visible: false
835
+ }), NO_STATE_INHERIT),
836
+
837
+ zHoop: rootNode.addChild(new Mesh(rootNode, { // Blue hoop about Z-axis
838
+ geometry: shapes.hoop,
839
+ material: materials.blue,
840
+ highlighted: true,
841
+ highlightMaterial: materials.highlightBlue,
842
+ matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),
843
+ pickable: false,
844
+ collidable: true,
845
+ clippable: false,
846
+ backfaces: true,
847
+ visible: false
848
+ }), NO_STATE_INHERIT),
849
+
850
+ xAxisArrow: rootNode.addChild(new Mesh(rootNode, {
851
+ geometry: shapes.arrowHeadBig,
852
+ material: materials.red,
853
+ matrix: (function () {
854
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
855
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());
856
+ return math.mulMat4(rotate, translate, math.identityMat4());
857
+ })(),
858
+ pickable: false,
859
+ collidable: true,
860
+ clippable: false,
861
+ visible: false
862
+ }), NO_STATE_INHERIT),
863
+
864
+ yAxisArrow: rootNode.addChild(new Mesh(rootNode, {
865
+ geometry: shapes.arrowHeadBig,
866
+ material: materials.green,
867
+ matrix: (function () {
868
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
869
+ const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());
870
+ return math.mulMat4(rotate, translate, math.identityMat4());
871
+ })(),
872
+ pickable: false,
873
+ collidable: true,
874
+ clippable: false,
875
+ visible: false
876
+ }), NO_STATE_INHERIT),
877
+
878
+ zAxisArrow: rootNode.addChild(new Mesh(rootNode, {
879
+ geometry: shapes.arrowHeadBig,
880
+ material: materials.blue,
881
+ matrix: (function () {
882
+ const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());
883
+ const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());
884
+ return math.mulMat4(rotate, translate, math.identityMat4());
885
+ })(),
886
+ pickable: false,
887
+ collidable: true,
888
+ clippable: false,
889
+ visible: false
890
+ }), NO_STATE_INHERIT)
891
+ };
892
+ }
893
+
894
+ _bindEvents() {
895
+
896
+ const self = this;
897
+
898
+ var grabbed = false;
899
+
900
+ const DRAG_ACTIONS = {
901
+ none: -1,
902
+ xTranslate: 0,
903
+ yTranslate: 1,
904
+ zTranslate: 2,
905
+ xRotate: 3,
906
+ yRotate: 4,
907
+ zRotate: 5
908
+ };
909
+
910
+ const rootNode = this._rootNode;
911
+
912
+ var nextDragAction = null; // As we hover grabbed an arrow or hoop, self is the action we would do if we then dragged it.
913
+ var dragAction = null; // Action we're doing while we drag an arrow or hoop.
914
+ const lastCanvasPos = math.vec2();
915
+
916
+ const xBaseAxis = math.vec3([1, 0, 0]);
917
+ const yBaseAxis = math.vec3([0, 1, 0]);
918
+ const zBaseAxis = math.vec3([0, 0, 1]);
919
+
920
+ const canvas = this._viewer.scene.canvas.canvas;
921
+ const camera = this._viewer.camera;
922
+ const scene = this._viewer.scene;
923
+
924
+ { // Keep gizmo screen size constant
925
+
926
+ const tempVec3a = math.vec3([0, 0, 0]);
927
+
928
+ let distDirty = true;
929
+ let lastDist = -1;
930
+
931
+ this._onCameraViewMatrix = scene.camera.on("viewMatrix", () => {
932
+ distDirty = true;
933
+ });
934
+
935
+ this._onCameraProjMatrix = scene.camera.on("projMatrix", () => {
936
+ distDirty = true;
937
+ });
938
+
939
+ this._onSceneTick = scene.on("tick", () => {
940
+
941
+ const dist = Math.abs(math.lenVec3(math.subVec3(scene.camera.eye, this._pos, tempVec3a)));
942
+
943
+ if (dist !== lastDist) {
944
+ if (camera.projection === "perspective") {
945
+ const worldSize = (Math.tan(camera.perspective.fov * math.DEGTORAD)) * dist;
946
+ const size = 0.07 * worldSize;
947
+ rootNode.scale = [size, size, size];
948
+ lastDist = dist;
949
+ }
950
+ }
951
+
952
+ if (camera.projection === "ortho") {
953
+ const worldSize = camera.ortho.scale / 10;
954
+ const size = worldSize;
955
+ rootNode.scale = [size, size, size];
956
+ lastDist = dist;
957
+ }
958
+ });
959
+ }
960
+
961
+ const getClickCoordsWithinElement = (function () {
962
+ const canvasPos = new Float64Array(2);
963
+ return function (event) {
964
+ if (!event) {
965
+ event = window.event;
966
+ canvasPos[0] = event.x;
967
+ canvasPos[1] = event.y;
968
+ } else {
969
+ var element = event.target;
970
+ var totalOffsetLeft = 0;
971
+ var totalOffsetTop = 0;
972
+
973
+ while (element.offsetParent) {
974
+ totalOffsetLeft += element.offsetLeft;
975
+ totalOffsetTop += element.offsetTop;
976
+ element = element.offsetParent;
977
+ }
978
+ canvasPos[0] = event.pageX - totalOffsetLeft;
979
+ canvasPos[1] = event.pageY - totalOffsetTop;
980
+ }
981
+ return canvasPos;
982
+ };
983
+ })();
984
+
985
+ const localToWorldVec = (function () {
986
+ const mat = math.mat4();
987
+ return function (localVec, worldVec) {
988
+ math.quaternionToMat4(self._rootNode.quaternion, mat);
989
+ math.transformVec3(mat, localVec, worldVec);
990
+ math.normalizeVec3(worldVec);
991
+ return worldVec;
992
+ };
993
+ })();
994
+
995
+ var getTranslationPlane = (function () {
996
+ const planeNormal = math.vec3();
997
+ return function (worldAxis) {
998
+ const absX = Math.abs(worldAxis[0]);
999
+ if (absX > Math.abs(worldAxis[1]) && absX > Math.abs(worldAxis[2])) {
1000
+ math.cross3Vec3(worldAxis, [0, 1, 0], planeNormal);
1001
+ } else {
1002
+ math.cross3Vec3(worldAxis, [1, 0, 0], planeNormal);
1003
+ }
1004
+ math.cross3Vec3(planeNormal, worldAxis, planeNormal);
1005
+ math.normalizeVec3(planeNormal);
1006
+ return planeNormal;
1007
+ }
1008
+ })();
1009
+
1010
+ const dragTranslateSectionPlane = (function () {
1011
+ const p1 = math.vec3();
1012
+ const p2 = math.vec3();
1013
+ const worldAxis = math.vec4();
1014
+ return function (baseAxis, fromMouse, toMouse) {
1015
+ localToWorldVec(baseAxis, worldAxis);
1016
+ const planeNormal = getTranslationPlane(worldAxis, fromMouse, toMouse);
1017
+ getPointerPlaneIntersect(fromMouse, planeNormal, p1);
1018
+ getPointerPlaneIntersect(toMouse, planeNormal, p2);
1019
+ math.subVec3(p2, p1);
1020
+ const dot = math.dotVec3(p2, worldAxis);
1021
+ self._pos[0] += worldAxis[0] * dot;
1022
+ self._pos[1] += worldAxis[1] * dot;
1023
+ self._pos[2] += worldAxis[2] * dot;
1024
+ self._rootNode.position = self._pos;
1025
+ if (self._sectionPlane) {
1026
+ self._sectionPlane.pos = self._pos;
1027
+ }
1028
+ }
1029
+ })();
1030
+
1031
+ var dragRotateSectionPlane = (function () {
1032
+ const p1 = math.vec4();
1033
+ const p2 = math.vec4();
1034
+ const c = math.vec4();
1035
+ const worldAxis = math.vec4();
1036
+ return function (baseAxis, fromMouse, toMouse) {
1037
+ localToWorldVec(baseAxis, worldAxis);
1038
+ const hasData = getPointerPlaneIntersect(fromMouse, worldAxis, p1) && getPointerPlaneIntersect(toMouse, worldAxis, p2);
1039
+ if (!hasData) { // Find intersections with view plane and project down to origin
1040
+ const planeNormal = getTranslationPlane(worldAxis, fromMouse, toMouse);
1041
+ getPointerPlaneIntersect(fromMouse, planeNormal, p1, 1); // Ensure plane moves closer to camera so angles become workable
1042
+ getPointerPlaneIntersect(toMouse, planeNormal, p2, 1);
1043
+ var dot = math.dotVec3(p1, worldAxis);
1044
+ p1[0] -= dot * worldAxis[0];
1045
+ p1[1] -= dot * worldAxis[1];
1046
+ p1[2] -= dot * worldAxis[2];
1047
+ dot = math.dotVec3(p2, worldAxis);
1048
+ p2[0] -= dot * worldAxis[0];
1049
+ p2[1] -= dot * worldAxis[1];
1050
+ p2[2] -= dot * worldAxis[2];
1051
+ }
1052
+ math.normalizeVec3(p1);
1053
+ math.normalizeVec3(p2);
1054
+ dot = math.dotVec3(p1, p2);
1055
+ dot = math.clamp(dot, -1.0, 1.0); // Rounding errors cause dot to exceed allowed range
1056
+ var incDegrees = Math.acos(dot) * math.RADTODEG;
1057
+ math.cross3Vec3(p1, p2, c);
1058
+ if (math.dotVec3(c, worldAxis) < 0.0) {
1059
+ incDegrees = -incDegrees;
1060
+ }
1061
+ self._rootNode.rotate(baseAxis, incDegrees);
1062
+ rotateSectionPlane();
1063
+ }
1064
+ })();
1065
+
1066
+ var getPointerPlaneIntersect = (function () {
1067
+ const dir = math.vec4([0, 0, 0, 1]);
1068
+ const matrix = math.mat4();
1069
+ return function (mouse, axis, dest, offset) {
1070
+ offset = offset || 0;
1071
+ dir[0] = mouse[0] / canvas.width * 2.0 - 1.0;
1072
+ dir[1] = -(mouse[1] / canvas.height * 2.0 - 1.0);
1073
+ dir[2] = 0.0;
1074
+ dir[3] = 1.0;
1075
+ math.mulMat4(camera.projMatrix, camera.viewMatrix, matrix); // Unproject norm device coords to view coords
1076
+ math.inverseMat4(matrix);
1077
+ math.transformVec4(matrix, dir, dir);
1078
+ math.mulVec4Scalar(dir, 1.0 / dir[3]); // This is now point A on the ray in world space
1079
+ var rayO = camera.eye; // The direction
1080
+ math.subVec4(dir, rayO, dir);
1081
+ const origin = self._sectionPlane.pos; // Plane origin:
1082
+ var d = -math.dotVec3(origin, axis) - offset;
1083
+ var dot = math.dotVec3(axis, dir);
1084
+ if (Math.abs(dot) > 0.005) {
1085
+ var t = -(math.dotVec3(axis, rayO) + d) / dot;
1086
+ math.mulVec3Scalar(dir, t, dest);
1087
+ math.addVec3(dest, rayO);
1088
+ math.subVec3(dest, origin, dest);
1089
+ return true;
1090
+ }
1091
+ return false;
1092
+ }
1093
+ })();
1094
+
1095
+ const rotateSectionPlane = (function () {
1096
+ const dir = math.vec3();
1097
+ const mat = math.mat4();
1098
+ return function () {
1099
+ if (self.sectionPlane) {
1100
+ math.quaternionToMat4(rootNode.quaternion, mat); // << ---
1101
+ math.transformVec3(mat, [0, 0, 1], dir);
1102
+ self._setSectionPlaneDir(dir);
1103
+ }
1104
+ };
1105
+ })();
1106
+
1107
+ {
1108
+ var mouseDownLeft;
1109
+ var mouseDownMiddle;
1110
+ var mouseDownRight;
1111
+ var down = false;
1112
+ var lastAffordanceMesh;
1113
+
1114
+ this._onCameraControlHover = this._viewer.cameraControl.on("hoverEnter", (hit) => {
1115
+ if (!this._visible) {
1116
+ return;
1117
+ }
1118
+ if (down) {
1119
+ return;
1120
+ }
1121
+ grabbed = false;
1122
+ if (lastAffordanceMesh) {
1123
+ lastAffordanceMesh.visible = false;
1124
+ }
1125
+ var affordanceMesh;
1126
+ const meshId = hit.entity.id;
1127
+ switch (meshId) {
1128
+
1129
+ case this._displayMeshes.xAxisArrowHandle.id:
1130
+ affordanceMesh = this._affordanceMeshes.xAxisArrow;
1131
+ nextDragAction = DRAG_ACTIONS.xTranslate;
1132
+ break;
1133
+
1134
+ case this._displayMeshes.xAxisHandle.id:
1135
+ affordanceMesh = this._affordanceMeshes.xAxisArrow;
1136
+ nextDragAction = DRAG_ACTIONS.xTranslate;
1137
+ break;
1138
+
1139
+ case this._displayMeshes.yAxisArrowHandle.id:
1140
+ affordanceMesh = this._affordanceMeshes.yAxisArrow;
1141
+ nextDragAction = DRAG_ACTIONS.yTranslate;
1142
+ break;
1143
+
1144
+ case this._displayMeshes.yShaftHandle.id:
1145
+ affordanceMesh = this._affordanceMeshes.yAxisArrow;
1146
+ nextDragAction = DRAG_ACTIONS.yTranslate;
1147
+ break;
1148
+
1149
+ case this._displayMeshes.zAxisArrowHandle.id:
1150
+ affordanceMesh = this._affordanceMeshes.zAxisArrow;
1151
+ nextDragAction = DRAG_ACTIONS.zTranslate;
1152
+ break;
1153
+
1154
+ case this._displayMeshes.zAxisHandle.id:
1155
+ affordanceMesh = this._affordanceMeshes.zAxisArrow;
1156
+ nextDragAction = DRAG_ACTIONS.zTranslate;
1157
+ break;
1158
+
1159
+ case this._displayMeshes.xCurveHandle.id:
1160
+ affordanceMesh = this._affordanceMeshes.xHoop;
1161
+ nextDragAction = DRAG_ACTIONS.xRotate;
1162
+ break;
1163
+
1164
+ case this._displayMeshes.yCurveHandle.id:
1165
+ affordanceMesh = this._affordanceMeshes.yHoop;
1166
+ nextDragAction = DRAG_ACTIONS.yRotate;
1167
+ break;
1168
+
1169
+ case this._displayMeshes.zCurveHandle.id:
1170
+ affordanceMesh = this._affordanceMeshes.zHoop;
1171
+ nextDragAction = DRAG_ACTIONS.zRotate;
1172
+ break;
1173
+
1174
+ default:
1175
+ nextDragAction = DRAG_ACTIONS.none;
1176
+ return; // Not clicked an arrow or hoop
1177
+ }
1178
+ if (affordanceMesh) {
1179
+ affordanceMesh.visible = true;
1180
+ }
1181
+ lastAffordanceMesh = affordanceMesh;
1182
+ grabbed = true;
1183
+ });
1184
+
1185
+ this._onCameraControlHoverLeave = this._viewer.cameraControl.on("hoverOutEntity", (hit) => {
1186
+ if (!this._visible) {
1187
+ return;
1188
+ }
1189
+ if (lastAffordanceMesh) {
1190
+ lastAffordanceMesh.visible = false;
1191
+ }
1192
+ lastAffordanceMesh = null;
1193
+ nextDragAction = DRAG_ACTIONS.none;
1194
+ });
1195
+
1196
+ canvas.addEventListener("mousedown", this._canvasMouseDownListener = (e) => {
1197
+ e.preventDefault();
1198
+ if (!this._visible) {
1199
+ return;
1200
+ }
1201
+ if (!grabbed) {
1202
+ return;
1203
+ }
1204
+ this._viewer.cameraControl.pointerEnabled = false;
1205
+ switch (e.which) {
1206
+ case 1: // Left button
1207
+ mouseDownLeft = true;
1208
+ down = true;
1209
+ var canvasPos = getClickCoordsWithinElement(e);
1210
+ dragAction = nextDragAction;
1211
+ lastCanvasPos[0] = canvasPos[0];
1212
+ lastCanvasPos[1] = canvasPos[1];
1213
+ break;
1214
+
1215
+ default:
1216
+ break;
1217
+ }
1218
+ });
1219
+
1220
+ canvas.addEventListener("mousemove", this._canvasMouseMoveListener = (e) => {
1221
+ if (!this._visible) {
1222
+ return;
1223
+ }
1224
+ if (!down) {
1225
+ return;
1226
+ }
1227
+ var canvasPos = getClickCoordsWithinElement(e);
1228
+ const x = canvasPos[0];
1229
+ const y = canvasPos[1];
1230
+
1231
+ switch (dragAction) {
1232
+ case DRAG_ACTIONS.xTranslate:
1233
+ dragTranslateSectionPlane(xBaseAxis, lastCanvasPos, canvasPos);
1234
+ break;
1235
+ case DRAG_ACTIONS.yTranslate:
1236
+ dragTranslateSectionPlane(yBaseAxis, lastCanvasPos, canvasPos);
1237
+ break;
1238
+ case DRAG_ACTIONS.zTranslate:
1239
+ dragTranslateSectionPlane(zBaseAxis, lastCanvasPos, canvasPos);
1240
+ break;
1241
+ case DRAG_ACTIONS.xRotate:
1242
+ dragRotateSectionPlane(xBaseAxis, lastCanvasPos, canvasPos);
1243
+ break;
1244
+ case DRAG_ACTIONS.yRotate:
1245
+ dragRotateSectionPlane(yBaseAxis, lastCanvasPos, canvasPos);
1246
+ break;
1247
+ case DRAG_ACTIONS.zRotate:
1248
+ dragRotateSectionPlane(zBaseAxis, lastCanvasPos, canvasPos);
1249
+ break;
1250
+ }
1251
+
1252
+ lastCanvasPos[0] = x;
1253
+ lastCanvasPos[1] = y;
1254
+ });
1255
+
1256
+ canvas.addEventListener("mouseup", this._canvasMouseUpListener = (e) => {
1257
+ if (!this._visible) {
1258
+ return;
1259
+ }
1260
+ this._viewer.cameraControl.pointerEnabled = true;
1261
+ if (!down) {
1262
+ return;
1263
+ }
1264
+ switch (e.which) {
1265
+ case 1: // Left button
1266
+ mouseDownLeft = false;
1267
+ break;
1268
+ case 2: // Middle/both buttons
1269
+ mouseDownMiddle = false;
1270
+ break;
1271
+ case 3: // Right button
1272
+ mouseDownRight = false;
1273
+ break;
1274
+ default:
1275
+ break;
1276
+ }
1277
+ down = false;
1278
+ grabbed = false;
1279
+ });
1280
+
1281
+ canvas.addEventListener("wheel", this._canvasWheelListener = (e) => {
1282
+ if (!this._visible) {
1283
+ return;
1284
+ }
1285
+ var delta = Math.max(-1, Math.min(1, -e.deltaY * 40));
1286
+ if (delta === 0) {
1287
+ return;
1288
+ }
1289
+ });
1290
+ }
1291
+ }
1292
+
1293
+ _destroy() {
1294
+ this._unbindEvents();
1295
+ this._destroyNodes();
1296
+ }
1297
+
1298
+ _unbindEvents() {
1299
+
1300
+ const viewer = this._viewer;
1301
+ const scene = viewer.scene;
1302
+ const canvas = scene.canvas.canvas;
1303
+ const camera = viewer.camera;
1304
+ const cameraControl = viewer.cameraControl;
1305
+
1306
+ scene.off(this._onSceneTick);
1307
+
1308
+ canvas.removeEventListener("mousedown", this._canvasMouseDownListener);
1309
+ canvas.removeEventListener("mousemove", this._canvasMouseMoveListener);
1310
+ canvas.removeEventListener("mouseup", this._canvasMouseUpListener);
1311
+ canvas.removeEventListener("wheel", this._canvasWheelListener);
1312
+
1313
+ camera.off(this._onCameraViewMatrix);
1314
+ camera.off(this._onCameraProjMatrix);
1315
+
1316
+ cameraControl.off(this._onCameraControlHover);
1317
+ cameraControl.off(this._onCameraControlHoverLeave);
1318
+ }
1319
+
1320
+ _destroyNodes() {
1321
+ this._setSectionPlane(null);
1322
+ this._rootNode.destroy();
1323
+ this._displayMeshes = {};
1324
+ this._affordanceMeshes = {};
1325
+ }
1326
+ }
1327
+
1328
+ export {Control};