@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,389 @@
1
+ import {PropertySet} from "./PropertySet";
2
+ import {MetaObject} from "./MetaObject";
3
+ import {math} from "../scene";
4
+
5
+ /**
6
+ * @desc Metadata corresponding to an {@link Entity} that represents a model.
7
+ *
8
+ * An {@link Entity} represents a model when {@link Entity#isModel} is ````true````
9
+ *
10
+ * A MetaModel corresponds to an {@link Entity} by having the same {@link MetaModel#id} as the {@link Entity#id}.
11
+ *
12
+ * A MetaModel is created by {@link MetaScene#createMetaModel} and belongs to a {@link MetaScene}.
13
+ *
14
+ * Each MetaModel is registered by {@link MetaModel#id} in {@link MetaScene#metaModels}.
15
+ *
16
+ * A {@link MetaModel} represents its object structure with a tree of {@link MetaObject}s, with {@link MetaModel#rootMetaObject} referencing the root {@link MetaObject}.
17
+ *
18
+ * @class MetaModel
19
+ */
20
+ class MetaModel {
21
+
22
+ /**
23
+ * Creates a new, unfinalized MetaModel.
24
+ *
25
+ * * The MetaModel is immediately registered by {@link MetaModel#id} in {@link MetaScene#metaModels}, even though it's not yet populated.
26
+ * * The MetaModel then needs to be populated with one or more calls to {@link metaModel#loadData}.
27
+ * * As we populate it, the MetaModel will create {@link MetaObject}s and {@link PropertySet}s in itself, and in the MetaScene.
28
+ * * When populated, call {@link MetaModel#finalize} to finish it off, which causes MetaScene to fire a "metaModelCreated" event.
29
+ */
30
+ constructor(params) {
31
+
32
+ /**
33
+ * Globally-unique ID.
34
+ *
35
+ * MetaModels are registered by ID in {@link MetaScene#metaModels}.
36
+ *
37
+ * When this MetaModel corresponds to an {@link Entity} then this ID will match the {@link Entity#id}.
38
+ *
39
+ * @property id
40
+ * @type {String|Number}
41
+ */
42
+ this.id = params.id;
43
+
44
+ /**
45
+ * The project ID
46
+ * @property projectId
47
+ * @type {String|Number}
48
+ */
49
+ this.projectId = params.projectId;
50
+
51
+ /**
52
+ * The revision ID, if available.
53
+ *
54
+ * Will be undefined if not available.
55
+ *
56
+ * @property revisionId
57
+ * @type {String|Number}
58
+ */
59
+ this.revisionId = params.revisionId;
60
+
61
+ /**
62
+ * The model author, if available.
63
+ *
64
+ * Will be undefined if not available.
65
+ *
66
+ * @property author
67
+ * @type {String}
68
+ */
69
+ this.author = params.author;
70
+
71
+ /**
72
+ * The date the model was created, if available.
73
+ *
74
+ * Will be undefined if not available.
75
+ *
76
+ * @property createdAt
77
+ * @type {String}
78
+ */
79
+ this.createdAt = params.createdAt;
80
+
81
+ /**
82
+ * The application that created the model, if available.
83
+ *
84
+ * Will be undefined if not available.
85
+ *
86
+ * @property creatingApplication
87
+ * @type {String}
88
+ */
89
+ this.creatingApplication = params.creatingApplication;
90
+
91
+ /**
92
+ * The model schema version, if available.
93
+ *
94
+ * Will be undefined if not available.
95
+ *
96
+ * @property schema
97
+ * @type {String}
98
+ */
99
+ this.schema = params.schema;
100
+
101
+ /**
102
+ * Metadata on the {@link Scene}.
103
+ *
104
+ * @property metaScene
105
+ * @type {MetaScene}
106
+ */
107
+ this.metaScene = params.metaScene;
108
+
109
+ /**
110
+ * The {@link PropertySet}s in this MetaModel.
111
+ *
112
+ * @property propertySets
113
+ * @type {PropertySet[]}
114
+ */
115
+ this.propertySets = [];
116
+
117
+ /**
118
+ * The root {@link MetaObject} in this MetaModel's composition structure hierarchy.
119
+ *
120
+ * @property rootMetaObject
121
+ * @type {MetaObject}
122
+ * @deprecated
123
+ */
124
+ this.rootMetaObject = null;
125
+
126
+ /**
127
+ * The root {@link MetaObject}s in this MetaModel's composition structure hierarchy.
128
+ *
129
+ * @property rootMetaObject
130
+ * @type {MetaObject[]}
131
+ */
132
+ this.rootMetaObjects = [];
133
+
134
+ /**
135
+ * The {@link MetaObject}s in this MetaModel, each mapped to its ID.
136
+ *
137
+ * @property metaObjects
138
+ * @type {MetaObject[]}
139
+ */
140
+ this.metaObjects = [];
141
+
142
+ /**
143
+ * Connectivity graph.
144
+ * @type {{}}
145
+ */
146
+ this.graph = params.graph || {};
147
+
148
+ this.metaScene.metaModels[this.id] = this;
149
+
150
+ /**
151
+ * True when this MetaModel has been finalized.
152
+ * @type {boolean}
153
+ */
154
+ this.finalized = false;
155
+ }
156
+
157
+ /**
158
+ * Load metamodel data into this MetaModel.
159
+ * @param metaModelData
160
+ */
161
+ loadData(metaModelData, options = {}) {
162
+
163
+ if (this.finalized) {
164
+ throw "MetaScene already finalized - can't add more data";
165
+ }
166
+
167
+ this._globalizeIDs(metaModelData, options)
168
+
169
+ const metaScene = this.metaScene;
170
+
171
+ // Create global Property Sets
172
+
173
+ if (metaModelData.propertySets) {
174
+ for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
175
+ const propertySetData = metaModelData.propertySets[i];
176
+ let propertySet = metaScene.propertySets[propertySetData.id];
177
+ if (!propertySet) {
178
+ propertySet = new PropertySet({
179
+ id: propertySetData.id,
180
+ originalSystemId: propertySetData.originalSystemId || propertySetData.id,
181
+ type: propertySetData.type,
182
+ name: propertySetData.name,
183
+ properties: propertySetData.properties
184
+ });
185
+ metaScene.propertySets[propertySet.id] = propertySet;
186
+ }
187
+ propertySet.metaModels.push(this);
188
+ this.propertySets.push(propertySet);
189
+ }
190
+ }
191
+
192
+ if (metaModelData.metaObjects) {
193
+ for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
194
+ const metaObjectData = metaModelData.metaObjects[i];
195
+ const id = metaObjectData.id;
196
+ let metaObject = metaScene.metaObjects[id];
197
+ if (!metaObject) {
198
+ const type = metaObjectData.type;
199
+ const originalSystemId = metaObjectData.originalSystemId;
200
+ const propertySetIds = metaObjectData.propertySets || metaObjectData.propertySetIds;
201
+ metaObject = new MetaObject({
202
+ id,
203
+ originalSystemId,
204
+ parentId: metaObjectData.parent,
205
+ type,
206
+ name: metaObjectData.name,
207
+ attributes: metaObjectData.attributes,
208
+ propertySetIds
209
+ });
210
+ this.metaScene.metaObjects[id] = metaObject;
211
+ }
212
+ metaObject.metaModels.push(this);
213
+ if (!metaObjectData.parent) {
214
+ this.rootMetaObjects.push(metaObject);
215
+ metaScene.rootMetaObjects[id] = metaObject;
216
+ }
217
+ this.metaObjects.push(metaObject);
218
+ }
219
+ }
220
+ }
221
+
222
+ finalize() {
223
+
224
+ if (this.finalized) {
225
+ throw "MetaScene already finalized - can't re-finalize";
226
+ }
227
+
228
+ // Re-link MetaScene's entire MetaObject parent/child hierarchy
229
+
230
+ const metaScene = this.metaScene;
231
+
232
+ for (let objectId in metaScene.metaObjects) {
233
+ const metaObject = metaScene.metaObjects[objectId];
234
+ if (metaObject.children) {
235
+ metaObject.children = [];
236
+ }
237
+
238
+ // Re-link each MetaObject's property sets
239
+
240
+ if (metaObject.propertySets) {
241
+ metaObject.propertySets = [];
242
+ }
243
+ if (metaObject.propertySetIds) {
244
+ for (let i = 0, len = metaObject.propertySetIds.length; i < len; i++) {
245
+ const propertySetId = metaObject.propertySetIds[i];
246
+ const propertySet = metaScene.propertySets[propertySetId];
247
+ metaObject.propertySets.push(propertySet);
248
+ }
249
+ }
250
+ }
251
+
252
+ for (let objectId in metaScene.metaObjects) {
253
+ const metaObject = metaScene.metaObjects[objectId];
254
+ if (metaObject.parentId) {
255
+ const parentMetaObject = metaScene.metaObjects[metaObject.parentId];
256
+ if (parentMetaObject) {
257
+ metaObject.parent = parentMetaObject;
258
+ (parentMetaObject.children || (parentMetaObject.children = [])).push(metaObject);
259
+ }
260
+ }
261
+ }
262
+
263
+ // Rebuild MetaScene's MetaObjects-by-type lookup
264
+
265
+ metaScene.metaObjectsByType = {};
266
+ for (let objectId in metaScene.metaObjects) {
267
+ const metaObject = metaScene.metaObjects[objectId];
268
+ const type = metaObject.type;
269
+ (metaScene.metaObjectsByType[type] || (metaScene.metaObjectsByType[type] = {}))[objectId] = metaObject;
270
+ }
271
+
272
+ this.finalized = true;
273
+
274
+ this.metaScene.fire("metaModelCreated", this.id);
275
+ }
276
+
277
+ /**
278
+ * Gets this MetaModel as JSON.
279
+ * @returns {{schema: (String|string|*), createdAt: (String|string|*), metaObjects: *[], author: (String|string|*), id: (String|Number|string|number|*), creatingApplication: (String|string|*), projectId: (String|Number|string|number|*), propertySets: *[]}}
280
+ */
281
+ getJSON() {
282
+ const json = {
283
+ id: this.id,
284
+ projectId: this.projectId,
285
+ author: this.author,
286
+ createdAt: this.createdAt,
287
+ schema: this.schema,
288
+ creatingApplication: this.creatingApplication,
289
+ metaObjects: [],
290
+ propertySets: []
291
+ };
292
+ for (let i = 0, len = this.metaObjects.length; i < len; i++) {
293
+ const metaObject = this.metaObjects[i];
294
+ const metaObjectCfg = {
295
+ id: metaObject.id,
296
+ originalSystemId: metaObject.originalSystemId,
297
+ extId: metaObject.extId,
298
+ type: metaObject.type,
299
+ name: metaObject.name
300
+ };
301
+ if (metaObject.parent) {
302
+ metaObjectCfg.parent = metaObject.parent.id;
303
+ }
304
+ if (metaObject.attributes) {
305
+ metaObjectCfg.attributes = metaObject.attributes;
306
+ }
307
+ if (metaObject.propertySetIds) {
308
+ metaObjectCfg.propertySetIds = metaObject.propertySetIds;
309
+ }
310
+ json.metaObjects.push(metaObjectCfg);
311
+ }
312
+ for (let i = 0, len = this.propertySets.length; i < len; i++) {
313
+ const propertySet = this.propertySets[i];
314
+ const propertySetCfg = {
315
+ id: propertySet.id,
316
+ originalSystemId: propertySet.originalSystemId,
317
+ extId: propertySet.extId,
318
+ type: propertySet.type,
319
+ name: propertySet.name,
320
+ propertyies: []
321
+ };
322
+ for (let j = 0, lenj = propertySet.properties.length; j < lenj; j++) {
323
+ const property = propertySet.properties[j];
324
+ const propertyCfg = {
325
+ id: property.id,
326
+ description: property.description,
327
+ type: property.type,
328
+ name: property.name,
329
+ value: property.value,
330
+ valueType: property.valueType
331
+ };
332
+ propertySetCfg.properties.push(propertyCfg);
333
+ }
334
+ json.propertySets.push(propertySetCfg);
335
+ }
336
+ return json;
337
+ }
338
+
339
+ _globalizeIDs(metaModelData, options) {
340
+
341
+ const globalize = !!options.globalizeObjectIds;
342
+
343
+ if (metaModelData.metaObjects) {
344
+ for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
345
+ const metaObjectData = metaModelData.metaObjects[i];
346
+
347
+ // Globalize MetaObject IDs and parent IDs
348
+
349
+ metaObjectData.originalSystemId = metaObjectData.id;
350
+ metaObjectData.originalParentSystemId = metaObjectData.parent;
351
+ if (globalize) {
352
+ metaObjectData.id = math.globalizeObjectId(this.id, metaObjectData.id);
353
+ metaObjectData.parent = math.globalizeObjectId(this.id, metaObjectData.parent);
354
+ }
355
+
356
+ // Globalize MetaObject property set IDs
357
+
358
+ if (globalize) {
359
+ const propertySetIds = metaObjectData.propertySetIds;
360
+ if (propertySetIds) {
361
+ const propertySetGlobalIds = [];
362
+ for (let j = 0, lenj = propertySetIds.length; j < lenj; j++) {
363
+ propertySetGlobalIds.push(math.globalizeObjectId(this.id, propertySetIds[j]));
364
+ }
365
+ metaObjectData.propertySetIds = propertySetGlobalIds;
366
+ metaObjectData.originalSystemPropertySetIds = propertySetIds;
367
+ }
368
+ } else {
369
+ metaObjectData.originalSystemPropertySetIds = metaObjectData.propertySetIds;
370
+ }
371
+ }
372
+ }
373
+
374
+ // Globalize global PropertySet IDs
375
+
376
+ if (metaModelData.propertySets) {
377
+ for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
378
+ const propertySet = metaModelData.propertySets[i];
379
+ propertySet.originalSystemId = propertySet.id;
380
+ if (globalize) {
381
+ propertySet.id = math.globalizeObjectId(mothis.id, propertySet.id);
382
+ }
383
+ }
384
+ }
385
+ }
386
+ }
387
+
388
+
389
+ export {MetaModel};
@@ -0,0 +1,218 @@
1
+ /**
2
+ * @desc Metadata corresponding to an {@link Entity} that represents an object.
3
+ *
4
+ * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````
5
+ *
6
+ * A MetaObject corresponds to an {@link Entity} by having the same {@link MetaObject#id} as the {@link Entity#id}.
7
+ *
8
+ * A MetaObject is created within {@link MetaScene#createMetaModel} and belongs to a {@link MetaModel}.
9
+ *
10
+ * Each MetaObject is registered by {@link MetaObject#id} in {@link MetaScene#metaObjects}.
11
+ *
12
+ * A {@link MetaModel} represents its object structure with a tree of MetaObjects, with {@link MetaModel#rootMetaObject} referencing
13
+ * the root MetaObject.
14
+ *
15
+ * @class MetaObject
16
+ */
17
+ class MetaObject {
18
+
19
+ /**
20
+ * @private
21
+ */
22
+ constructor(params) {
23
+
24
+ /**
25
+ * Model metadata.
26
+ *
27
+ * @property metaModel
28
+ * @type {MetaModel}
29
+ * @deprecated
30
+ */
31
+ this.metaModel = null;
32
+
33
+ /**
34
+ * The MetaModels that share this MetaObject.
35
+ * @type {MetaModel[]}
36
+ */
37
+ this.metaModels = [];
38
+
39
+ /**
40
+ * Globally-unique ID.
41
+ *
42
+ * MetaObject instances are registered by this ID in {@link MetaScene#metaObjects}.
43
+ *
44
+ * @property id
45
+ * @type {String|Number}
46
+ */
47
+ this.id = params.id;
48
+
49
+ /**
50
+ * ID of the parent MetaObject.
51
+ * @type {String|Number}
52
+ */
53
+ this.parentId = params.parentId;
54
+
55
+ /**
56
+ * The parent MetaObject.
57
+ * @type {MetaObject | null}
58
+ */
59
+ this.parent = null;
60
+
61
+ /**
62
+ * ID of the corresponding object within the originating system, if any.
63
+ *
64
+ * @type {String}
65
+ * @abstract
66
+ */
67
+ this.originalSystemId = params.originalSystemId;
68
+
69
+ /**
70
+ * Human-readable name.
71
+ *
72
+ * @property name
73
+ * @type {String}
74
+ */
75
+ this.name = params.name;
76
+
77
+ /**
78
+ * Type - often an IFC product type.
79
+ *
80
+ * @property type
81
+ * @type {String}
82
+ */
83
+ this.type = params.type;
84
+
85
+ /**
86
+ * IDs of PropertySets associated with this MetaObject.
87
+ * @type {[]|*}
88
+ */
89
+ this.propertySetIds = params.propertySetIds;
90
+
91
+ /**
92
+ * The {@link PropertySet}s associated with this MetaObject.
93
+ *
94
+ * @property propertySets
95
+ * @type {PropertySet[]}
96
+ */
97
+ this.propertySets = [];
98
+
99
+ /**
100
+ * The attributes of this MetaObject.
101
+ * @type {{}}
102
+ */
103
+ this.attributes = params.attributes || {};
104
+
105
+ // if (external !== undefined && external !== null) {
106
+ //
107
+ // /**
108
+ // * External application-specific metadata
109
+ // *
110
+ // * Undefined when there are is no external application-specific metadata.
111
+ // *
112
+ // * @property external
113
+ // * @type {*}
114
+ // */
115
+ // this.external = external;
116
+ // }
117
+ }
118
+
119
+ /**
120
+ * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the subtree.
121
+ *
122
+ * @returns {String[]} Array of {@link MetaObject#id}s.
123
+ */
124
+ getObjectIDsInSubtree() {
125
+ const objectIds = [];
126
+
127
+ function visit(metaObject) {
128
+ if (!metaObject) {
129
+ return;
130
+ }
131
+ objectIds.push(metaObject.id);
132
+ const children = metaObject.children;
133
+ if (children) {
134
+ for (var i = 0, len = children.length; i < len; i++) {
135
+ visit(children[i]);
136
+ }
137
+ }
138
+ }
139
+
140
+ visit(this);
141
+ return objectIds;
142
+ }
143
+
144
+
145
+ /**
146
+ * Iterates over the {@link MetaObject}s within the subtree.
147
+ *
148
+ * @param {Function} callback Callback fired at each {@link MetaObject}.
149
+ */
150
+ withMetaObjectsInSubtree(callback) {
151
+
152
+ function visit(metaObject) {
153
+ if (!metaObject) {
154
+ return;
155
+ }
156
+ callback(metaObject);
157
+ const children = metaObject.children;
158
+ if (children) {
159
+ for (var i = 0, len = children.length; i < len; i++) {
160
+ visit(children[i]);
161
+ }
162
+ }
163
+ }
164
+
165
+ visit(this);
166
+ }
167
+
168
+ /**
169
+ * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the subtree that have the given {@link MetaObject#type}s.
170
+ *
171
+ * @param {String[]} types {@link MetaObject#type} values.
172
+ * @returns {String[]} Array of {@link MetaObject#id}s.
173
+ */
174
+ getObjectIDsInSubtreeByType(types) {
175
+ const mask = {};
176
+ for (var i = 0, len = types.length; i < len; i++) {
177
+ mask[types[i]] = types[i];
178
+ }
179
+ const objectIds = [];
180
+
181
+ function visit(metaObject) {
182
+ if (!metaObject) {
183
+ return;
184
+ }
185
+ if (mask[metaObject.type]) {
186
+ objectIds.push(metaObject.id);
187
+ }
188
+ const children = metaObject.children;
189
+ if (children) {
190
+ for (var i = 0, len = children.length; i < len; i++) {
191
+ visit(children[i]);
192
+ }
193
+ }
194
+ }
195
+
196
+ visit(this);
197
+ return objectIds;
198
+ }
199
+
200
+ /**
201
+ * Returns properties of this MeteObject as JSON.
202
+ *
203
+ * @returns {{id: (String|Number), type: String, name: String, parent: (String|Number|Undefined)}}
204
+ */
205
+ getJSON() {
206
+ var json = {
207
+ id: this.id,
208
+ type: this.type,
209
+ name: this.name
210
+ };
211
+ if (this.parent) {
212
+ json.parent = this.parent.id
213
+ }
214
+ return json;
215
+ }
216
+ }
217
+
218
+ export {MetaObject};