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

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 (390) hide show
  1. package/dist/xeokit-sdk.cjs.js +5 -1
  2. package/dist/xeokit-sdk.es.js +5 -1
  3. package/dist/xeokit-sdk.es5.js +1 -1
  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 +2 -1
  8. package/src/extras/ContextMenu/ContextMenu.js +907 -0
  9. package/src/extras/ContextMenu/index.js +1 -0
  10. package/src/extras/index.js +1 -0
  11. package/src/index.js +3 -0
  12. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +658 -0
  13. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +418 -0
  14. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +400 -0
  15. package/src/plugins/AngleMeasurementsPlugin/index.js +1 -0
  16. package/src/plugins/AnnotationsPlugin/Annotation.js +368 -0
  17. package/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +583 -0
  18. package/src/plugins/AnnotationsPlugin/index.js +1 -0
  19. package/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +333 -0
  20. package/src/plugins/AxisGizmoPlugin/index.js +1 -0
  21. package/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +955 -0
  22. package/src/plugins/BCFViewpointsPlugin/index.js +1 -0
  23. package/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +29 -0
  24. package/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +751 -0
  25. package/src/plugins/CityJSONLoaderPlugin/index.js +1 -0
  26. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +870 -0
  27. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +376 -0
  28. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +454 -0
  29. package/src/plugins/DistanceMeasurementsPlugin/index.js +1 -0
  30. package/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +639 -0
  31. package/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +436 -0
  32. package/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +247 -0
  33. package/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +167 -0
  34. package/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +1 -0
  35. package/src/plugins/FastNavPlugin/FastNavPlugin.js +429 -0
  36. package/src/plugins/FastNavPlugin/index.js +1 -0
  37. package/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +139 -0
  38. package/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +421 -0
  39. package/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +669 -0
  40. package/src/plugins/GLTFLoaderPlugin/index.js +2 -0
  41. package/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +58 -0
  42. package/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +518 -0
  43. package/src/plugins/LASLoaderPlugin/index.js +1 -0
  44. package/src/plugins/LASLoaderPlugin/loadLASHeader.js +183 -0
  45. package/src/plugins/NavCubePlugin/CubeTextureCanvas.js +289 -0
  46. package/src/plugins/NavCubePlugin/NavCubePlugin.js +752 -0
  47. package/src/plugins/NavCubePlugin/index.js +1 -0
  48. package/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +145 -0
  49. package/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +777 -0
  50. package/src/plugins/OBJLoaderPlugin/index.js +1 -0
  51. package/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +33 -0
  52. package/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +274 -0
  53. package/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +313 -0
  54. package/src/plugins/STLLoaderPlugin/index.js +2 -0
  55. package/src/plugins/SectionPlanesPlugin/Control.js +1328 -0
  56. package/src/plugins/SectionPlanesPlugin/Overview.js +249 -0
  57. package/src/plugins/SectionPlanesPlugin/Plane.js +169 -0
  58. package/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +404 -0
  59. package/src/plugins/SectionPlanesPlugin/index.js +1 -0
  60. package/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +134 -0
  61. package/src/plugins/SkyboxesPlugin/index.js +1 -0
  62. package/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js +77 -0
  63. package/src/plugins/StoreyViewsPlugin/Storey.js +61 -0
  64. package/src/plugins/StoreyViewsPlugin/StoreyMap.js +57 -0
  65. package/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +825 -0
  66. package/src/plugins/StoreyViewsPlugin/index.js +1 -0
  67. package/src/plugins/TreeViewPlugin/TreeViewNode.js +97 -0
  68. package/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1424 -0
  69. package/src/plugins/TreeViewPlugin/index.js +1 -0
  70. package/src/plugins/ViewCullPlugin/ViewCullPlugin.js +295 -0
  71. package/src/plugins/ViewCullPlugin/index.js +1 -0
  72. package/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +58 -0
  73. package/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +942 -0
  74. package/src/plugins/WebIFCLoaderPlugin/index.js +1 -0
  75. package/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +95 -0
  76. package/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +1107 -0
  77. package/src/plugins/XKTLoaderPlugin/index.js +2 -0
  78. package/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +169 -0
  79. package/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +656 -0
  80. package/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +230 -0
  81. package/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +223 -0
  82. package/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +283 -0
  83. package/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +246 -0
  84. package/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +301 -0
  85. package/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +439 -0
  86. package/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +563 -0
  87. package/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +518 -0
  88. package/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +2 -0
  89. package/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +238 -0
  90. package/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +1279 -0
  91. package/src/plugins/XML3DLoaderPlugin/index.js +1 -0
  92. package/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +11 -0
  93. package/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +2060 -0
  94. package/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +2155 -0
  95. package/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +1002 -0
  96. package/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +64 -0
  97. package/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +153 -0
  98. package/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +267 -0
  99. package/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +553 -0
  100. package/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +991 -0
  101. package/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +49 -0
  102. package/src/plugins/index.js +21 -0
  103. package/src/plugins/lib/culling/ObjectCullStates.js +208 -0
  104. package/src/plugins/lib/earcut.js +677 -0
  105. package/src/plugins/lib/html/Dot.js +145 -0
  106. package/src/plugins/lib/html/Label.js +156 -0
  107. package/src/plugins/lib/html/Wire.js +191 -0
  108. package/src/viewer/Configs.js +79 -0
  109. package/src/viewer/Plugin.js +224 -0
  110. package/src/viewer/Viewer.js +535 -0
  111. package/src/viewer/index.js +5 -0
  112. package/src/viewer/localization/LocaleService.js +475 -0
  113. package/src/viewer/metadata/IFCObjectDefaultColors.js +162 -0
  114. package/src/viewer/metadata/IFCObjectDefaults.js +17 -0
  115. package/src/viewer/metadata/MetaModel.js +389 -0
  116. package/src/viewer/metadata/MetaObject.js +218 -0
  117. package/src/viewer/metadata/MetaScene.js +336 -0
  118. package/src/viewer/metadata/Property.js +55 -0
  119. package/src/viewer/metadata/PropertySet.js +77 -0
  120. package/src/viewer/scene/Bitmap/Bitmap.js +470 -0
  121. package/src/viewer/scene/Bitmap/index.js +1 -0
  122. package/src/viewer/scene/CameraControl/CameraControl.js +1737 -0
  123. package/src/viewer/scene/CameraControl/lib/CameraUpdater.js +312 -0
  124. package/src/viewer/scene/CameraControl/lib/controllers/PanController.js +112 -0
  125. package/src/viewer/scene/CameraControl/lib/controllers/PickController.js +264 -0
  126. package/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +384 -0
  127. package/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +122 -0
  128. package/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +183 -0
  129. package/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +68 -0
  130. package/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +345 -0
  131. package/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +372 -0
  132. package/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +269 -0
  133. package/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +235 -0
  134. package/src/viewer/scene/Component.js +907 -0
  135. package/src/viewer/scene/Entity.js +502 -0
  136. package/src/viewer/scene/ImagePlane/ImagePlane.js +570 -0
  137. package/src/viewer/scene/ImagePlane/index.js +1 -0
  138. package/src/viewer/scene/LineSet/LineSet.js +164 -0
  139. package/src/viewer/scene/LineSet/index.js +1 -0
  140. package/src/viewer/scene/camera/Camera.js +912 -0
  141. package/src/viewer/scene/camera/CameraFlightAnimation.js +669 -0
  142. package/src/viewer/scene/camera/CameraPath.js +194 -0
  143. package/src/viewer/scene/camera/CameraPathAnimation.js +326 -0
  144. package/src/viewer/scene/camera/CustomProjection.js +149 -0
  145. package/src/viewer/scene/camera/Frustum.js +316 -0
  146. package/src/viewer/scene/camera/Ortho.js +286 -0
  147. package/src/viewer/scene/camera/Perspective.js +304 -0
  148. package/src/viewer/scene/camera/index.js +2 -0
  149. package/src/viewer/scene/canvas/Canvas.js +492 -0
  150. package/src/viewer/scene/canvas/Spinner.js +323 -0
  151. package/src/viewer/scene/constants/constants.js +371 -0
  152. package/src/viewer/scene/core.js +233 -0
  153. package/src/viewer/scene/geometry/Geometry.js +33 -0
  154. package/src/viewer/scene/geometry/ReadableGeometry.js +682 -0
  155. package/src/viewer/scene/geometry/VBOGeometry.js +319 -0
  156. package/src/viewer/scene/geometry/builders/buildBoxGeometry.js +238 -0
  157. package/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +106 -0
  158. package/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +271 -0
  159. package/src/viewer/scene/geometry/builders/buildGridGeometry.js +102 -0
  160. package/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +168 -0
  161. package/src/viewer/scene/geometry/builders/buildSphereGeometry.js +161 -0
  162. package/src/viewer/scene/geometry/builders/buildTorusGeometry.js +172 -0
  163. package/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +1721 -0
  164. package/src/viewer/scene/geometry/builders/index.js +8 -0
  165. package/src/viewer/scene/geometry/index.js +4 -0
  166. package/src/viewer/scene/geometry/loaders/index.js +2 -0
  167. package/src/viewer/scene/geometry/loaders/load3DSGeometry.js +103 -0
  168. package/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +130 -0
  169. package/src/viewer/scene/index.js +23 -0
  170. package/src/viewer/scene/input/Input.js +1325 -0
  171. package/src/viewer/scene/libs/k3d.js +1032 -0
  172. package/src/viewer/scene/lights/AmbientLight.js +175 -0
  173. package/src/viewer/scene/lights/CubeTexture.js +156 -0
  174. package/src/viewer/scene/lights/DirLight.js +314 -0
  175. package/src/viewer/scene/lights/Light.js +29 -0
  176. package/src/viewer/scene/lights/LightMap.js +77 -0
  177. package/src/viewer/scene/lights/PointLight.js +395 -0
  178. package/src/viewer/scene/lights/ReflectionMap.js +79 -0
  179. package/src/viewer/scene/lights/Shadow.js +138 -0
  180. package/src/viewer/scene/lights/index.js +5 -0
  181. package/src/viewer/scene/lod/LOD.js +162 -0
  182. package/src/viewer/scene/lod/LODCullingManager.js +83 -0
  183. package/src/viewer/scene/lod/LODState.js +125 -0
  184. package/src/viewer/scene/lod/index.js +1 -0
  185. package/src/viewer/scene/marker/Marker.js +383 -0
  186. package/src/viewer/scene/marker/SpriteMarker.js +356 -0
  187. package/src/viewer/scene/marker/index.js +2 -0
  188. package/src/viewer/scene/materials/EdgeMaterial.js +359 -0
  189. package/src/viewer/scene/materials/EmphasisMaterial.js +613 -0
  190. package/src/viewer/scene/materials/Fresnel.js +222 -0
  191. package/src/viewer/scene/materials/LambertMaterial.js +378 -0
  192. package/src/viewer/scene/materials/LinesMaterial.js +169 -0
  193. package/src/viewer/scene/materials/Material.js +39 -0
  194. package/src/viewer/scene/materials/MetallicMaterial.js +820 -0
  195. package/src/viewer/scene/materials/PhongMaterial.js +860 -0
  196. package/src/viewer/scene/materials/PointsMaterial.js +409 -0
  197. package/src/viewer/scene/materials/SpecularMaterial.js +807 -0
  198. package/src/viewer/scene/materials/Texture.js +513 -0
  199. package/src/viewer/scene/materials/index.js +8 -0
  200. package/src/viewer/scene/math/Frustum.js +118 -0
  201. package/src/viewer/scene/math/buildEdgeIndices.js +162 -0
  202. package/src/viewer/scene/math/geometryCompressionUtils.js +365 -0
  203. package/src/viewer/scene/math/index.js +3 -0
  204. package/src/viewer/scene/math/math.js +5363 -0
  205. package/src/viewer/scene/math/rtcCoords.js +139 -0
  206. package/src/viewer/scene/mementos/CameraMemento.js +200 -0
  207. package/src/viewer/scene/mementos/ModelMemento.js +263 -0
  208. package/src/viewer/scene/mementos/ObjectsMemento.js +259 -0
  209. package/src/viewer/scene/mementos/index.js +3 -0
  210. package/src/viewer/scene/mesh/Mesh.js +2202 -0
  211. package/src/viewer/scene/mesh/draw/DrawRenderer.js +986 -0
  212. package/src/viewer/scene/mesh/draw/DrawShaderSource.js +1570 -0
  213. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +249 -0
  214. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +158 -0
  215. package/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +276 -0
  216. package/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +261 -0
  217. package/src/viewer/scene/mesh/index.js +1 -0
  218. package/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +207 -0
  219. package/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +156 -0
  220. package/src/viewer/scene/mesh/pick/PickMeshRenderer.js +210 -0
  221. package/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +142 -0
  222. package/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +186 -0
  223. package/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +116 -0
  224. package/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
  225. package/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +98 -0
  226. package/src/viewer/scene/metriqs/Metriqs.js +259 -0
  227. package/src/viewer/scene/model/ENTITY_FLAGS.js +21 -0
  228. package/src/viewer/scene/model/PerformanceModel.js +26 -0
  229. package/src/viewer/scene/model/RENDER_PASSES.js +34 -0
  230. package/src/viewer/scene/model/SceneModel.js +3817 -0
  231. package/src/viewer/scene/model/SceneModelEntity.js +478 -0
  232. package/src/viewer/scene/model/SceneModelMesh.js +160 -0
  233. package/src/viewer/scene/model/SceneModelTexture.js +17 -0
  234. package/src/viewer/scene/model/SceneModelTextureSet.js +17 -0
  235. package/src/viewer/scene/model/VBOSceneModel.js +26 -0
  236. package/src/viewer/scene/model/compression.js +227 -0
  237. package/src/viewer/scene/model/dtx/triangles/BindableDataTexture.js +31 -0
  238. package/src/viewer/scene/model/dtx/triangles/DataTextureGenerator.js +631 -0
  239. package/src/viewer/scene/model/dtx/triangles/DataTextureState.js +288 -0
  240. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureBuffer.js +31 -0
  241. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureLayer.js +1329 -0
  242. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureRenderers.js +278 -0
  243. package/src/viewer/scene/model/dtx/triangles/calculateUniquePositions.js +126 -0
  244. package/src/viewer/scene/model/dtx/triangles/dataTextureRamStats.js +54 -0
  245. package/src/viewer/scene/model/dtx/triangles/rebucketPositions.js +347 -0
  246. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorRenderer.js +633 -0
  247. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureDepthRenderer.js +475 -0
  248. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesColorRenderer.js +426 -0
  249. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesRenderer.js +430 -0
  250. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureNormalsRenderer.js +341 -0
  251. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureOcclusionRenderer.js +442 -0
  252. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickDepthRenderer.js +451 -0
  253. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickMeshRenderer.js +436 -0
  254. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js +502 -0
  255. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsRenderer.js +430 -0
  256. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSilhouetteRenderer.js +469 -0
  257. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js +451 -0
  258. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthRenderer.js +424 -0
  259. package/src/viewer/scene/model/index.js +3 -0
  260. package/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
  261. package/src/viewer/scene/model/vbo/VBOSceneModelRenderers.js +805 -0
  262. package/src/viewer/scene/model/vbo/float16.js +760 -0
  263. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingBuffer.js +21 -0
  264. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingLayer.js +744 -0
  265. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingRenderers.js +71 -0
  266. package/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingColorRenderer.js +116 -0
  267. package/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js +126 -0
  268. package/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingLayer.js +653 -0
  269. package/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingRenderers.js +71 -0
  270. package/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingColorRenderer.js +150 -0
  271. package/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js +128 -0
  272. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingBuffer.js +22 -0
  273. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingLayer.js +753 -0
  274. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingRenderers.js +116 -0
  275. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingColorRenderer.js +167 -0
  276. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js +135 -0
  277. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js +154 -0
  278. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js +146 -0
  279. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingShadowRenderer.js +108 -0
  280. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js +147 -0
  281. package/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingLayer.js +684 -0
  282. package/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingRenderers.js +146 -0
  283. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingColorRenderer.js +174 -0
  284. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingDepthRenderer.js +156 -0
  285. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js +151 -0
  286. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js +167 -0
  287. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js +151 -0
  288. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingShadowRenderer.js +121 -0
  289. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js +156 -0
  290. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthBufInitRenderer.js +351 -0
  291. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthRenderer.js +365 -0
  292. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingRenderers.js +71 -0
  293. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthBufInitRenderer.js +381 -0
  294. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthRenderer.js +374 -0
  295. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingRenderers.js +71 -0
  296. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingBuffer.js +26 -0
  297. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingLayer.js +1322 -0
  298. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingRenderers.js +322 -0
  299. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js +240 -0
  300. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js +271 -0
  301. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js +127 -0
  302. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js +129 -0
  303. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js +134 -0
  304. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js +237 -0
  305. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js +139 -0
  306. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js +127 -0
  307. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js +563 -0
  308. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js +143 -0
  309. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js +130 -0
  310. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js +119 -0
  311. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js +129 -0
  312. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js +108 -0
  313. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js +137 -0
  314. package/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingLayer.js +1167 -0
  315. package/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingRenderers.js +322 -0
  316. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js +253 -0
  317. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js +278 -0
  318. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js +125 -0
  319. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js +131 -0
  320. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js +134 -0
  321. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js +244 -0
  322. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js +130 -0
  323. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js +140 -0
  324. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js +130 -0
  325. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js +563 -0
  326. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js +148 -0
  327. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js +135 -0
  328. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js +130 -0
  329. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js +144 -0
  330. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js +113 -0
  331. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js +141 -0
  332. package/src/viewer/scene/nodes/Node.js +1383 -0
  333. package/src/viewer/scene/nodes/index.js +1 -0
  334. package/src/viewer/scene/paths/CubicBezierCurve.js +194 -0
  335. package/src/viewer/scene/paths/Curve.js +183 -0
  336. package/src/viewer/scene/paths/Path.js +239 -0
  337. package/src/viewer/scene/paths/QuadraticBezierCurve.js +161 -0
  338. package/src/viewer/scene/paths/SplineCurve.js +133 -0
  339. package/src/viewer/scene/paths/index.js +5 -0
  340. package/src/viewer/scene/postfx/SAO.js +543 -0
  341. package/src/viewer/scene/scene/Scene.js +2627 -0
  342. package/src/viewer/scene/sectionPlane/SectionPlane.js +194 -0
  343. package/src/viewer/scene/sectionPlane/index.js +1 -0
  344. package/src/viewer/scene/skybox/Skybox.js +123 -0
  345. package/src/viewer/scene/skybox/index.js +1 -0
  346. package/src/viewer/scene/stats.js +44 -0
  347. package/src/viewer/scene/utils/Cache.js +29 -0
  348. package/src/viewer/scene/utils/FileLoader.js +160 -0
  349. package/src/viewer/scene/utils/Loader.js +55 -0
  350. package/src/viewer/scene/utils/LoadingManager.js +86 -0
  351. package/src/viewer/scene/utils/Map.js +45 -0
  352. package/src/viewer/scene/utils/Queue.js +56 -0
  353. package/src/viewer/scene/utils/WorkerPool.js +73 -0
  354. package/src/viewer/scene/utils/index.js +6 -0
  355. package/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +650 -0
  356. package/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +1 -0
  357. package/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +31 -0
  358. package/src/viewer/scene/utils/textureTranscoders/index.js +2 -0
  359. package/src/viewer/scene/utils.js +452 -0
  360. package/src/viewer/scene/vfc/VFC.js +82 -0
  361. package/src/viewer/scene/vfc/VFCManager.js +54 -0
  362. package/src/viewer/scene/vfc/VFCState.js +391 -0
  363. package/src/viewer/scene/vfc/cluster-helper.js +134 -0
  364. package/src/viewer/scene/vfc/index.js +1 -0
  365. package/src/viewer/scene/vfc/rbush3d.js +848 -0
  366. package/src/viewer/scene/vfc/xeokit-cluster.js +418 -0
  367. package/src/viewer/scene/viewport/Viewport.js +212 -0
  368. package/src/viewer/scene/webgl/ArrayBuf.js +121 -0
  369. package/src/viewer/scene/webgl/Attribute.js +23 -0
  370. package/src/viewer/scene/webgl/Drawable.js +270 -0
  371. package/src/viewer/scene/webgl/FrameContext.js +313 -0
  372. package/src/viewer/scene/webgl/PickResult.js +339 -0
  373. package/src/viewer/scene/webgl/Pickable.js +69 -0
  374. package/src/viewer/scene/webgl/Program.js +181 -0
  375. package/src/viewer/scene/webgl/RenderBuffer.js +350 -0
  376. package/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
  377. package/src/viewer/scene/webgl/RenderFlags.js +203 -0
  378. package/src/viewer/scene/webgl/RenderState.js +40 -0
  379. package/src/viewer/scene/webgl/Renderer.js +1654 -0
  380. package/src/viewer/scene/webgl/Sampler.js +18 -0
  381. package/src/viewer/scene/webgl/Shader.js +49 -0
  382. package/src/viewer/scene/webgl/Texture2D.js +442 -0
  383. package/src/viewer/scene/webgl/convertConstant.js +244 -0
  384. package/src/viewer/scene/webgl/getExtension.js +32 -0
  385. package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +214 -0
  386. package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +426 -0
  387. package/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
  388. package/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +376 -0
  389. package/src/viewer/scene/webgl/webglEnums.js +61 -0
  390. package/src/viewer/scene/webglInfo.js +47 -0
@@ -0,0 +1,194 @@
1
+ import {Component} from '../Component.js';
2
+ import {RenderState} from '../webgl/RenderState.js';
3
+ import {math} from "../math/math.js";
4
+
5
+ /**
6
+ * @desc An arbitrarily-aligned World-space clipping plane.
7
+ *
8
+ * * Slices portions off objects to create cross-section views or reveal interiors.
9
+ * * Registered by {@link SectionPlane#id} in {@link Scene#sectionPlanes}.
10
+ * * Indicates World-space position in {@link SectionPlane#pos} and orientation in {@link SectionPlane#dir}.
11
+ * * Discards elements from the half-space in the direction of {@link SectionPlane#dir}.
12
+ * * Can be be enabled or disabled via {@link SectionPlane#active}.
13
+ *
14
+ * ## Usage
15
+ *
16
+ * In the example below, we'll create two SectionPlanes to slice a model loaded from glTF. Note that we could also create them
17
+ * using a {@link SectionPlanesPlugin}.
18
+ *
19
+ * ````javascript
20
+ * import {Viewer, GLTFLoaderPlugin, SectionPlane} from "xeokit-sdk.es.js";
21
+ *
22
+ * const viewer = new Viewer({
23
+ * canvasId: "myCanvas"
24
+ * });
25
+ *
26
+ * const gltfLoaderPlugin = new GLTFModelsPlugin(viewer, {
27
+ * id: "GLTFModels"
28
+ * });
29
+ *
30
+ * const model = gltfLoaderPlugin.load({
31
+ * id: "myModel",
32
+ * src: "./models/gltf/mygltfmodel.gltf"
33
+ * });
34
+ *
35
+ * // Create a SectionPlane on negative diagonal
36
+ * const sectionPlane1 = new SectionPlane(viewer.scene, {
37
+ * pos: [1.0, 1.0, 1.0],
38
+ * dir: [-1.0, -1.0, -1.0],
39
+ * active: true
40
+ * }),
41
+ *
42
+ * // Create a SectionPlane on positive diagonal
43
+ * const sectionPlane2 = new SectionPlane(viewer.scene, {
44
+ * pos: [-1.0, -1.0, -1.0],
45
+ * dir: [1.0, 1.0, 1.0],
46
+ * active: true
47
+ * });
48
+ * ````
49
+ */
50
+ class SectionPlane extends Component {
51
+
52
+ /**
53
+ @private
54
+ */
55
+ get type() {
56
+ return "SectionPlane";
57
+ }
58
+
59
+ /**
60
+ * @constructor
61
+ * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this SectionPlane as well.
62
+ * @param {*} [cfg] SectionPlane configuration
63
+ * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.
64
+ * @param {Boolean} [cfg.active=true] Indicates whether or not this SectionPlane is active.
65
+ * @param {Number[]} [cfg.pos=[0,0,0]] World-space position of the SectionPlane.
66
+ * @param {Number[]} [cfg.dir=[0,0,-1]] Vector perpendicular to the plane surface, indicating the SectionPlane plane orientation.
67
+ */
68
+ constructor(owner, cfg = {}) {
69
+
70
+ super(owner, cfg);
71
+
72
+ this._state = new RenderState({
73
+ active: true,
74
+ pos: math.vec3(),
75
+ dir: math.vec3(),
76
+ dist: 0
77
+ });
78
+
79
+ this.active = cfg.active;
80
+ this.pos = cfg.pos;
81
+ this.dir = cfg.dir;
82
+
83
+ this.scene._sectionPlaneCreated(this);
84
+ }
85
+
86
+ /**
87
+ * Sets if this SectionPlane is active or not.
88
+ *
89
+ * Default value is ````true````.
90
+ *
91
+ * @param {Boolean} value Set ````true```` to activate else ````false```` to deactivate.
92
+ */
93
+ set active(value) {
94
+ this._state.active = value !== false;
95
+ this.glRedraw();
96
+ this.fire("active", this._state.active);
97
+ }
98
+
99
+ /**
100
+ * Gets if this SectionPlane is active or not.
101
+ *
102
+ * Default value is ````true````.
103
+ *
104
+ * @returns {Boolean} Returns ````true```` if active.
105
+ */
106
+ get active() {
107
+ return this._state.active;
108
+ }
109
+
110
+ /**
111
+ * Sets the World-space position of this SectionPlane's plane.
112
+ *
113
+ * Default value is ````[0, 0, 0]````.
114
+ *
115
+ * @param {Number[]} value New position.
116
+ */
117
+ set pos(value) {
118
+ this._state.pos.set(value || [0, 0, 0]);
119
+ this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));
120
+ this.fire("pos", this._state.pos);
121
+ }
122
+
123
+ /**
124
+ * Gets the World-space position of this SectionPlane's plane.
125
+ *
126
+ * Default value is ````[0, 0, 0]````.
127
+ *
128
+ * @returns {Number[]} Current position.
129
+ */
130
+ get pos() {
131
+ return this._state.pos;
132
+ }
133
+
134
+ /**
135
+ * Sets the direction of this SectionPlane's plane.
136
+ *
137
+ * Default value is ````[0, 0, -1]````.
138
+ *
139
+ * @param {Number[]} value New direction.
140
+ */
141
+ set dir(value) {
142
+ this._state.dir.set(value || [0, 0, -1]);
143
+ this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));
144
+ this.glRedraw();
145
+ this.fire("dir", this._state.dir);
146
+ }
147
+
148
+ /**
149
+ * Gets the direction of this SectionPlane's plane.
150
+ *
151
+ * Default value is ````[0, 0, -1]````.
152
+ *
153
+ * @returns {Number[]} value Current direction.
154
+ */
155
+ get dir() {
156
+ return this._state.dir;
157
+ }
158
+
159
+ /**
160
+ * Gets this SectionPlane's distance to the origin of the World-space coordinate system.
161
+ *
162
+ * This is the dot product of {@link SectionPlane#pos} and {@link SectionPlane#dir} and is automatically re-calculated
163
+ * each time either of two properties are updated.
164
+ *
165
+ * @returns {Number}
166
+ */
167
+ get dist() {
168
+ return this._state.dist;
169
+ }
170
+
171
+ /**
172
+ * Inverts the direction of {@link SectionPlane#dir}.
173
+ */
174
+ flipDir() {
175
+ const dir = this._state.dir;
176
+ dir[0] *= -1.0;
177
+ dir[1] *= -1.0;
178
+ dir[2] *= -1.0;
179
+ this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));
180
+ this.fire("dir", this._state.dir);
181
+ this.glRedraw();
182
+ }
183
+
184
+ /**
185
+ * @destroy
186
+ */
187
+ destroy() {
188
+ this._state.destroy();
189
+ this.scene._sectionPlaneDestroyed(this);
190
+ super.destroy();
191
+ }
192
+ }
193
+
194
+ export {SectionPlane};
@@ -0,0 +1 @@
1
+ export * from "./SectionPlane.js";
@@ -0,0 +1,123 @@
1
+ import {Component} from "../Component.js";
2
+ import {Mesh} from "../mesh/Mesh.js";
3
+ import {ReadableGeometry} from "../geometry/ReadableGeometry.js";
4
+ import {PhongMaterial} from "../materials/PhongMaterial.js";
5
+ import {Texture} from "../materials/Texture.js";
6
+
7
+ /**
8
+ * @desc A Skybox.
9
+ */
10
+ class Skybox extends Component {
11
+
12
+ /**
13
+ * @constructor
14
+ * @param {Component} owner Owner component. When destroyed, the owner will destroy this PointLight as well.
15
+ * @param {*} [cfg] Skybox configuration
16
+ * @param {String} [cfg.id] Optional ID, unique among all components in the parent {Scene}, generated automatically when omitted.
17
+ * @param {String} [cfg.src=null] Path to skybox texture
18
+ * @param {String} [cfg.encoding="linear"] Texture encoding format. See the {@link Texture#encoding} property for more info.
19
+ * @param {Number} [cfg.size=1000] Size of this Skybox, given as the distance from the center at ````[0,0,0]```` to each face.
20
+ * @param {Boolean} [cfg.active=true] True when this Skybox is visible.
21
+ */
22
+ constructor(owner, cfg = {}) {
23
+
24
+ super(owner, cfg);
25
+
26
+ this._skyboxMesh = new Mesh(this, {
27
+
28
+ geometry: new ReadableGeometry(this, { // Box-shaped geometry
29
+ primitive: "triangles",
30
+ positions: [
31
+ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front
32
+ 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v5 right
33
+ 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v5-v6-v1 top
34
+ -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left
35
+ -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom
36
+ 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v5 back
37
+ ],
38
+ uv: [
39
+ 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,
40
+ 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,
41
+ 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
42
+ ],
43
+ indices: [
44
+ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11,
45
+ 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23
46
+ ]
47
+ }),
48
+ background: true,
49
+ scale: [2000, 2000, 2000], // Overridden when we initialize the 'size' property, below
50
+ rotation: [0, -90, 0],
51
+ material: new PhongMaterial(this, {
52
+ ambient: [0, 0, 0],
53
+ diffuse: [0, 0, 0],
54
+ specular: [0, 0, 0],
55
+ emissive: [1, 1, 1],
56
+ emissiveMap: new Texture(this, {
57
+ src: cfg.src,
58
+ flipY: true,
59
+ wrapS: "clampToEdge",
60
+ wrapT: "clampToEdge",
61
+ encoding: cfg.encoding || "sRGB"
62
+ }),
63
+ backfaces: true // Show interior faces of our skybox geometry
64
+ }),
65
+ // stationary: true,
66
+ visible: false,
67
+ pickable: false,
68
+ clippable: false,
69
+ collidable: false
70
+ });
71
+
72
+ this.size = cfg.size; // Sets 'xyz' property on the Mesh's Scale transform
73
+ this.active = cfg.active;
74
+ }
75
+
76
+
77
+ /**
78
+ * Sets the size of this Skybox, given as the distance from the center at [0,0,0] to each face.
79
+ *
80
+ * Default value is ````1000````.
81
+ *
82
+ * @param {Number} value The size.
83
+ */
84
+ set size(value) {
85
+ this._size = value || 1000;
86
+ this._skyboxMesh.scale = [this._size, this._size, this._size];
87
+ }
88
+
89
+ /**
90
+ * Gets the size of this Skybox, given as the distance from the center at [0,0,0] to each face.
91
+ *
92
+ * Default value is ````1000````.
93
+ *
94
+ * @returns {Number} The size.
95
+ */
96
+ get size() {
97
+ return this._size;
98
+ }
99
+
100
+ /**
101
+ * Sets whether this Skybox is visible or not.
102
+ *
103
+ * Default value is ````true````.
104
+ *
105
+ * @param {Boolean} active Whether to make active or not.
106
+ */
107
+ set active(active) {
108
+ this._skyboxMesh.visible = active;
109
+ }
110
+
111
+ /**
112
+ * Gets if this Skybox is visible or not.
113
+ *
114
+ * Default active is ````true````.
115
+ *
116
+ * @returns {Boolean} ````true```` if the Skybox is active.
117
+ */
118
+ get active() {
119
+ return this._skyboxMesh.visible;
120
+ }
121
+ }
122
+
123
+ export {Skybox}
@@ -0,0 +1 @@
1
+ export * from "./Skybox.js";
@@ -0,0 +1,44 @@
1
+ /**
2
+ * xeokit runtime statistics.
3
+ * @type {{components: {models: number, objects: number, scenes: number, meshes: number}, memory: {indices: number, uvs: number, textures: number, materials: number, transforms: number, positions: number, programs: number, normals: number, meshes: number, colors: number}, build: {version: string}, client: {browser: string}, frame: {frameCount: number, useProgram: number, bindTexture: number, drawElements: number, bindArray: number, tasksRun: number, fps: number, drawArrays: number, tasksScheduled: number}}}
4
+ */
5
+ const stats = {
6
+ build: {
7
+ version: "0.8"
8
+ },
9
+ client: {
10
+ browser: (navigator && navigator.userAgent) ? navigator.userAgent : "n/a"
11
+ },
12
+
13
+ components: {
14
+ scenes: 0,
15
+ models: 0,
16
+ meshes: 0,
17
+ objects: 0
18
+ },
19
+ memory: {
20
+ meshes: 0,
21
+ positions: 0,
22
+ colors: 0,
23
+ normals: 0,
24
+ uvs: 0,
25
+ indices: 0,
26
+ textures: 0,
27
+ transforms: 0,
28
+ materials: 0,
29
+ programs: 0
30
+ },
31
+ frame: {
32
+ frameCount: 0,
33
+ fps: 0,
34
+ useProgram: 0,
35
+ bindTexture: 0,
36
+ bindArray: 0,
37
+ drawElements: 0,
38
+ drawArrays: 0,
39
+ tasksRun: 0,
40
+ tasksScheduled: 0
41
+ }
42
+ };
43
+
44
+ export {stats};
@@ -0,0 +1,29 @@
1
+ const Cache = {
2
+
3
+ enabled: false,
4
+ files: {},
5
+
6
+ add: function (key, file) {
7
+ if (this.enabled === false) {
8
+ return;
9
+ }
10
+ this.files[key] = file;
11
+ },
12
+
13
+ get: function (key) {
14
+ if (this.enabled === false) {
15
+ return;
16
+ }
17
+ return this.files[key];
18
+ },
19
+
20
+ remove: function (key) {
21
+ delete this.files[key];
22
+ },
23
+
24
+ clear: function () {
25
+ this.files = {};
26
+ }
27
+ };
28
+
29
+ export {Cache};
@@ -0,0 +1,160 @@
1
+ import {Cache} from './Cache.js';
2
+ import {Loader} from './Loader.js';
3
+
4
+ const loading = {};
5
+
6
+ class FileLoader extends Loader {
7
+
8
+ constructor(manager) {
9
+ super(manager);
10
+ }
11
+
12
+ load(url, onLoad, onProgress, onError) {
13
+ if (url === undefined) {
14
+ url = '';
15
+ }
16
+ if (this.path !== undefined) {
17
+ url = this.path + url;
18
+ }
19
+ url = this.manager.resolveURL(url);
20
+ const cached = Cache.get(url);
21
+ if (cached !== undefined) {
22
+ this.manager.itemStart(url);
23
+ setTimeout(() => {
24
+ if (onLoad) {
25
+ onLoad(cached);
26
+ }
27
+ this.manager.itemEnd(url);
28
+ }, 0);
29
+ return cached;
30
+ }
31
+ if (loading[url] !== undefined) {
32
+ loading[url].push({onLoad, onProgress, onError});
33
+ return;
34
+ }
35
+ loading[url] = [];
36
+ loading[url].push({onLoad, onProgress, onError});
37
+ const req = new Request(url, {
38
+ headers: new Headers(this.requestHeader),
39
+ credentials: this.withCredentials ? 'include' : 'same-origin'
40
+ });
41
+ const mimeType = this.mimeType;
42
+ const responseType = this.responseType;
43
+ fetch(req).then(response => {
44
+ if (response.status === 200 || response.status === 0) {
45
+ // Some browsers return HTTP Status 0 when using non-http protocol
46
+ // e.g. 'file://' or 'data://'. Handle as success.
47
+ if (response.status === 0) {
48
+ console.warn('FileLoader: HTTP Status 0 received.');
49
+ }
50
+ if (typeof ReadableStream === 'undefined' || response.body.getReader === undefined) {
51
+ return response;
52
+ }
53
+ const callbacks = loading[url];
54
+ const reader = response.body.getReader();
55
+ const contentLength = response.headers.get('Content-Length');
56
+ const total = contentLength ? parseInt(contentLength) : 0;
57
+ const lengthComputable = total !== 0;
58
+ let loaded = 0;
59
+ const stream = new ReadableStream({
60
+ start(controller) {
61
+ readData();
62
+
63
+ function readData() {
64
+ reader.read().then(({done, value}) => {
65
+ if (done) {
66
+ controller.close();
67
+ } else {
68
+ loaded += value.byteLength;
69
+ const event = new ProgressEvent('progress', {lengthComputable, loaded, total});
70
+ for (let i = 0, il = callbacks.length; i < il; i++) {
71
+ const callback = callbacks[i];
72
+ if (callback.onProgress) {
73
+ callback.onProgress(event);
74
+ }
75
+ }
76
+ controller.enqueue(value);
77
+ readData();
78
+ }
79
+ });
80
+ }
81
+ }
82
+ });
83
+ return new Response(stream);
84
+ } else {
85
+ throw Error(`fetch for "${response.url}" responded with ${response.status}: ${response.statusText}`);
86
+ }
87
+ }).then(response => {
88
+ switch (responseType) {
89
+ case 'arraybuffer':
90
+ return response.arrayBuffer();
91
+ case 'blob':
92
+ return response.blob();
93
+ case 'document':
94
+ return response.text()
95
+ .then(text => {
96
+ const parser = new DOMParser();
97
+ return parser.parseFromString(text, mimeType);
98
+ });
99
+ case 'json':
100
+ return response.json();
101
+ default:
102
+ if (mimeType === undefined) {
103
+ return response.text();
104
+ } else {
105
+ // sniff encoding
106
+ const re = /charset="?([^;"\s]*)"?/i;
107
+ const exec = re.exec(mimeType);
108
+ const label = exec && exec[1] ? exec[1].toLowerCase() : undefined;
109
+ const decoder = new TextDecoder(label);
110
+ return response.arrayBuffer().then(ab => decoder.decode(ab));
111
+ }
112
+ }
113
+ }).then(data => {
114
+ // Add to cache only on HTTP success, so that we do not cache
115
+ // error response bodies as proper responses to requests.
116
+ Cache.add(url, data);
117
+ const callbacks = loading[url];
118
+ delete loading[url];
119
+ for (let i = 0, il = callbacks.length; i < il; i++) {
120
+ const callback = callbacks[i];
121
+ if (callback.onLoad) {
122
+ callback.onLoad(data);
123
+ }
124
+ }
125
+ }).catch(err => {
126
+ // Abort errors and other errors are handled the same
127
+ const callbacks = loading[url];
128
+ if (callbacks === undefined) {
129
+ // When onLoad was called and url was deleted in `loading`
130
+ this.manager.itemError(url);
131
+ throw err;
132
+
133
+ }
134
+ delete loading[url];
135
+ for (let i = 0, il = callbacks.length; i < il; i++) {
136
+ const callback = callbacks[i];
137
+ if (callback.onError) {
138
+ callback.onError(err);
139
+ }
140
+ }
141
+ this.manager.itemError(url);
142
+ }).finally(() => {
143
+ this.manager.itemEnd(url);
144
+ });
145
+ this.manager.itemStart(url);
146
+ }
147
+
148
+ setResponseType(value) {
149
+ this.responseType = value;
150
+ return this;
151
+ }
152
+
153
+ setMimeType(value) {
154
+ this.mimeType = value;
155
+ return this;
156
+ }
157
+ }
158
+
159
+
160
+ export {FileLoader};
@@ -0,0 +1,55 @@
1
+ import {DefaultLoadingManager} from './LoadingManager.js';
2
+
3
+ class Loader {
4
+
5
+ constructor(manager) {
6
+
7
+ this.manager = (manager !== undefined) ? manager : DefaultLoadingManager;
8
+
9
+ this.crossOrigin = 'anonymous';
10
+ this.withCredentials = false;
11
+ this.path = '';
12
+ this.resourcePath = '';
13
+ this.requestHeader = {};
14
+ }
15
+
16
+ load( /* url, onLoad, onProgress, onError */) {
17
+ }
18
+
19
+ loadAsync(url, onProgress) {
20
+ const scope = this;
21
+ return new Promise(function (resolve, reject) {
22
+ scope.load(url, resolve, onProgress, reject);
23
+ });
24
+ }
25
+
26
+ parse( /* data */) {
27
+ }
28
+
29
+ setCrossOrigin(crossOrigin) {
30
+ this.crossOrigin = crossOrigin;
31
+ return this;
32
+ }
33
+
34
+ setWithCredentials(value) {
35
+ this.withCredentials = value;
36
+ return this;
37
+ }
38
+
39
+ setPath(path) {
40
+ this.path = path;
41
+ return this;
42
+ }
43
+
44
+ setResourcePath(resourcePath) {
45
+ this.resourcePath = resourcePath;
46
+ return this;
47
+ }
48
+
49
+ setRequestHeader(requestHeader) {
50
+ this.requestHeader = requestHeader;
51
+ return this;
52
+ }
53
+ }
54
+
55
+ export {Loader};
@@ -0,0 +1,86 @@
1
+ class LoadingManager {
2
+
3
+ constructor(onLoad, onProgress, onError) {
4
+
5
+ this.isLoading = false;
6
+ this.itemsLoaded = 0;
7
+ this.itemsTotal = 0;
8
+ this.urlModifier = undefined;
9
+ this.handlers = [];
10
+
11
+ this.onStart = undefined;
12
+ this.onLoad = onLoad;
13
+ this.onProgress = onProgress;
14
+ this.onError = onError;
15
+ }
16
+
17
+ itemStart(url) {
18
+ this.itemsTotal++;
19
+ if (this.isLoading === false) {
20
+ if (this.onStart !== undefined) {
21
+ this.onStart(url, this.itemsLoaded, this.itemsTotal);
22
+ }
23
+ }
24
+ this.isLoading = true;
25
+ }
26
+
27
+ itemEnd(url) {
28
+ this.itemsLoaded++;
29
+ if (this.onProgress !== undefined) {
30
+ this.onProgress(url, this.itemsLoaded, this.itemsTotal);
31
+ }
32
+ if (this.itemsLoaded === this.itemsTotal) {
33
+ this.isLoading = false;
34
+ if (this.onLoad !== undefined) {
35
+ this.onLoad();
36
+ }
37
+ }
38
+ }
39
+
40
+ itemError(url) {
41
+ if (this.onError !== undefined) {
42
+ this.onError(url);
43
+ }
44
+ }
45
+
46
+ resolveURL(url) {
47
+ if (this.urlModifier) {
48
+ return this.urlModifier(url);
49
+ }
50
+ return url;
51
+ }
52
+
53
+ setURLModifier(transform) {
54
+ this.urlModifier = transform;
55
+ return this;
56
+ }
57
+
58
+ addHandler(regex, loader) {
59
+ this.handlers.push(regex, loader);
60
+ return this;
61
+ }
62
+
63
+ removeHandler(regex) {
64
+ const index = this.handlers.indexOf(regex);
65
+ if (index !== -1) {
66
+ this.handlers.splice(index, 2);
67
+ }
68
+ return this;
69
+ }
70
+
71
+ getHandler(file) {
72
+ for (let i = 0, l = this.handlers.length; i < l; i += 2) {
73
+ const regex = this.handlers[i];
74
+ const loader = this.handlers[i + 1];
75
+ if (regex.global) regex.lastIndex = 0; // see #17920
76
+ if (regex.test(file)) {
77
+ return loader;
78
+ }
79
+ }
80
+ return null;
81
+ }
82
+ }
83
+
84
+ const DefaultLoadingManager = new LoadingManager();
85
+
86
+ export {DefaultLoadingManager, LoadingManager};