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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/package.json +2 -1
  2. package/src/extras/ContextMenu/ContextMenu.js +907 -0
  3. package/src/extras/ContextMenu/index.js +1 -0
  4. package/src/extras/index.js +1 -0
  5. package/src/index.js +3 -0
  6. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +658 -0
  7. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +418 -0
  8. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +400 -0
  9. package/src/plugins/AngleMeasurementsPlugin/index.js +1 -0
  10. package/src/plugins/AnnotationsPlugin/Annotation.js +368 -0
  11. package/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +583 -0
  12. package/src/plugins/AnnotationsPlugin/index.js +1 -0
  13. package/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +333 -0
  14. package/src/plugins/AxisGizmoPlugin/index.js +1 -0
  15. package/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +955 -0
  16. package/src/plugins/BCFViewpointsPlugin/index.js +1 -0
  17. package/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +29 -0
  18. package/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +751 -0
  19. package/src/plugins/CityJSONLoaderPlugin/index.js +1 -0
  20. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +870 -0
  21. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +376 -0
  22. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +454 -0
  23. package/src/plugins/DistanceMeasurementsPlugin/index.js +1 -0
  24. package/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +639 -0
  25. package/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +436 -0
  26. package/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +247 -0
  27. package/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +167 -0
  28. package/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +1 -0
  29. package/src/plugins/FastNavPlugin/FastNavPlugin.js +429 -0
  30. package/src/plugins/FastNavPlugin/index.js +1 -0
  31. package/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +139 -0
  32. package/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +421 -0
  33. package/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +669 -0
  34. package/src/plugins/GLTFLoaderPlugin/index.js +2 -0
  35. package/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +58 -0
  36. package/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +518 -0
  37. package/src/plugins/LASLoaderPlugin/index.js +1 -0
  38. package/src/plugins/LASLoaderPlugin/loadLASHeader.js +183 -0
  39. package/src/plugins/NavCubePlugin/CubeTextureCanvas.js +289 -0
  40. package/src/plugins/NavCubePlugin/NavCubePlugin.js +752 -0
  41. package/src/plugins/NavCubePlugin/index.js +1 -0
  42. package/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +145 -0
  43. package/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +777 -0
  44. package/src/plugins/OBJLoaderPlugin/index.js +1 -0
  45. package/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +33 -0
  46. package/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +274 -0
  47. package/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +313 -0
  48. package/src/plugins/STLLoaderPlugin/index.js +2 -0
  49. package/src/plugins/SectionPlanesPlugin/Control.js +1328 -0
  50. package/src/plugins/SectionPlanesPlugin/Overview.js +249 -0
  51. package/src/plugins/SectionPlanesPlugin/Plane.js +169 -0
  52. package/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +404 -0
  53. package/src/plugins/SectionPlanesPlugin/index.js +1 -0
  54. package/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +134 -0
  55. package/src/plugins/SkyboxesPlugin/index.js +1 -0
  56. package/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js +77 -0
  57. package/src/plugins/StoreyViewsPlugin/Storey.js +61 -0
  58. package/src/plugins/StoreyViewsPlugin/StoreyMap.js +57 -0
  59. package/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +825 -0
  60. package/src/plugins/StoreyViewsPlugin/index.js +1 -0
  61. package/src/plugins/TreeViewPlugin/TreeViewNode.js +97 -0
  62. package/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1424 -0
  63. package/src/plugins/TreeViewPlugin/index.js +1 -0
  64. package/src/plugins/ViewCullPlugin/ViewCullPlugin.js +295 -0
  65. package/src/plugins/ViewCullPlugin/index.js +1 -0
  66. package/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +58 -0
  67. package/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +942 -0
  68. package/src/plugins/WebIFCLoaderPlugin/index.js +1 -0
  69. package/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +95 -0
  70. package/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +1107 -0
  71. package/src/plugins/XKTLoaderPlugin/index.js +2 -0
  72. package/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +169 -0
  73. package/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +656 -0
  74. package/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +230 -0
  75. package/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +223 -0
  76. package/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +283 -0
  77. package/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +246 -0
  78. package/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +301 -0
  79. package/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +439 -0
  80. package/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +563 -0
  81. package/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +514 -0
  82. package/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +2 -0
  83. package/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +238 -0
  84. package/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +1279 -0
  85. package/src/plugins/XML3DLoaderPlugin/index.js +1 -0
  86. package/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +11 -0
  87. package/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +2060 -0
  88. package/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +2155 -0
  89. package/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +1002 -0
  90. package/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +64 -0
  91. package/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +153 -0
  92. package/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +267 -0
  93. package/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +553 -0
  94. package/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +991 -0
  95. package/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +49 -0
  96. package/src/plugins/index.js +21 -0
  97. package/src/plugins/lib/culling/ObjectCullStates.js +208 -0
  98. package/src/plugins/lib/earcut.js +677 -0
  99. package/src/plugins/lib/html/Dot.js +145 -0
  100. package/src/plugins/lib/html/Label.js +156 -0
  101. package/src/plugins/lib/html/Wire.js +191 -0
  102. package/src/viewer/Configs.js +79 -0
  103. package/src/viewer/Plugin.js +224 -0
  104. package/src/viewer/Viewer.js +535 -0
  105. package/src/viewer/index.js +5 -0
  106. package/src/viewer/localization/LocaleService.js +475 -0
  107. package/src/viewer/metadata/IFCObjectDefaultColors.js +162 -0
  108. package/src/viewer/metadata/IFCObjectDefaults.js +17 -0
  109. package/src/viewer/metadata/MetaModel.js +389 -0
  110. package/src/viewer/metadata/MetaObject.js +218 -0
  111. package/src/viewer/metadata/MetaScene.js +336 -0
  112. package/src/viewer/metadata/Property.js +55 -0
  113. package/src/viewer/metadata/PropertySet.js +77 -0
  114. package/src/viewer/scene/Bitmap/Bitmap.js +470 -0
  115. package/src/viewer/scene/Bitmap/index.js +1 -0
  116. package/src/viewer/scene/CameraControl/CameraControl.js +1737 -0
  117. package/src/viewer/scene/CameraControl/lib/CameraUpdater.js +312 -0
  118. package/src/viewer/scene/CameraControl/lib/controllers/PanController.js +112 -0
  119. package/src/viewer/scene/CameraControl/lib/controllers/PickController.js +264 -0
  120. package/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +384 -0
  121. package/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +122 -0
  122. package/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +183 -0
  123. package/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +68 -0
  124. package/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +345 -0
  125. package/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +372 -0
  126. package/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +269 -0
  127. package/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +235 -0
  128. package/src/viewer/scene/Component.js +907 -0
  129. package/src/viewer/scene/Entity.js +502 -0
  130. package/src/viewer/scene/ImagePlane/ImagePlane.js +570 -0
  131. package/src/viewer/scene/ImagePlane/index.js +1 -0
  132. package/src/viewer/scene/LineSet/LineSet.js +164 -0
  133. package/src/viewer/scene/LineSet/index.js +1 -0
  134. package/src/viewer/scene/camera/Camera.js +912 -0
  135. package/src/viewer/scene/camera/CameraFlightAnimation.js +669 -0
  136. package/src/viewer/scene/camera/CameraPath.js +194 -0
  137. package/src/viewer/scene/camera/CameraPathAnimation.js +326 -0
  138. package/src/viewer/scene/camera/CustomProjection.js +149 -0
  139. package/src/viewer/scene/camera/Frustum.js +316 -0
  140. package/src/viewer/scene/camera/Ortho.js +286 -0
  141. package/src/viewer/scene/camera/Perspective.js +304 -0
  142. package/src/viewer/scene/camera/index.js +2 -0
  143. package/src/viewer/scene/canvas/Canvas.js +492 -0
  144. package/src/viewer/scene/canvas/Spinner.js +323 -0
  145. package/src/viewer/scene/constants/constants.js +371 -0
  146. package/src/viewer/scene/core.js +233 -0
  147. package/src/viewer/scene/geometry/Geometry.js +33 -0
  148. package/src/viewer/scene/geometry/ReadableGeometry.js +682 -0
  149. package/src/viewer/scene/geometry/VBOGeometry.js +319 -0
  150. package/src/viewer/scene/geometry/builders/buildBoxGeometry.js +238 -0
  151. package/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +106 -0
  152. package/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +271 -0
  153. package/src/viewer/scene/geometry/builders/buildGridGeometry.js +102 -0
  154. package/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +168 -0
  155. package/src/viewer/scene/geometry/builders/buildSphereGeometry.js +161 -0
  156. package/src/viewer/scene/geometry/builders/buildTorusGeometry.js +172 -0
  157. package/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +1721 -0
  158. package/src/viewer/scene/geometry/builders/index.js +8 -0
  159. package/src/viewer/scene/geometry/index.js +4 -0
  160. package/src/viewer/scene/geometry/loaders/index.js +2 -0
  161. package/src/viewer/scene/geometry/loaders/load3DSGeometry.js +103 -0
  162. package/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +130 -0
  163. package/src/viewer/scene/index.js +23 -0
  164. package/src/viewer/scene/input/Input.js +1325 -0
  165. package/src/viewer/scene/libs/k3d.js +1032 -0
  166. package/src/viewer/scene/lights/AmbientLight.js +175 -0
  167. package/src/viewer/scene/lights/CubeTexture.js +156 -0
  168. package/src/viewer/scene/lights/DirLight.js +314 -0
  169. package/src/viewer/scene/lights/Light.js +29 -0
  170. package/src/viewer/scene/lights/LightMap.js +77 -0
  171. package/src/viewer/scene/lights/PointLight.js +395 -0
  172. package/src/viewer/scene/lights/ReflectionMap.js +79 -0
  173. package/src/viewer/scene/lights/Shadow.js +138 -0
  174. package/src/viewer/scene/lights/index.js +5 -0
  175. package/src/viewer/scene/lod/LOD.js +162 -0
  176. package/src/viewer/scene/lod/LODCullingManager.js +83 -0
  177. package/src/viewer/scene/lod/LODState.js +125 -0
  178. package/src/viewer/scene/lod/index.js +1 -0
  179. package/src/viewer/scene/marker/Marker.js +383 -0
  180. package/src/viewer/scene/marker/SpriteMarker.js +356 -0
  181. package/src/viewer/scene/marker/index.js +2 -0
  182. package/src/viewer/scene/materials/EdgeMaterial.js +359 -0
  183. package/src/viewer/scene/materials/EmphasisMaterial.js +613 -0
  184. package/src/viewer/scene/materials/Fresnel.js +222 -0
  185. package/src/viewer/scene/materials/LambertMaterial.js +378 -0
  186. package/src/viewer/scene/materials/LinesMaterial.js +169 -0
  187. package/src/viewer/scene/materials/Material.js +39 -0
  188. package/src/viewer/scene/materials/MetallicMaterial.js +820 -0
  189. package/src/viewer/scene/materials/PhongMaterial.js +860 -0
  190. package/src/viewer/scene/materials/PointsMaterial.js +409 -0
  191. package/src/viewer/scene/materials/SpecularMaterial.js +807 -0
  192. package/src/viewer/scene/materials/Texture.js +513 -0
  193. package/src/viewer/scene/materials/index.js +8 -0
  194. package/src/viewer/scene/math/Frustum.js +118 -0
  195. package/src/viewer/scene/math/buildEdgeIndices.js +162 -0
  196. package/src/viewer/scene/math/geometryCompressionUtils.js +365 -0
  197. package/src/viewer/scene/math/index.js +3 -0
  198. package/src/viewer/scene/math/math.js +5363 -0
  199. package/src/viewer/scene/math/rtcCoords.js +139 -0
  200. package/src/viewer/scene/mementos/CameraMemento.js +200 -0
  201. package/src/viewer/scene/mementos/ModelMemento.js +263 -0
  202. package/src/viewer/scene/mementos/ObjectsMemento.js +259 -0
  203. package/src/viewer/scene/mementos/index.js +3 -0
  204. package/src/viewer/scene/mesh/Mesh.js +2202 -0
  205. package/src/viewer/scene/mesh/draw/DrawRenderer.js +986 -0
  206. package/src/viewer/scene/mesh/draw/DrawShaderSource.js +1570 -0
  207. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +249 -0
  208. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +158 -0
  209. package/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +276 -0
  210. package/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +261 -0
  211. package/src/viewer/scene/mesh/index.js +1 -0
  212. package/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +207 -0
  213. package/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +156 -0
  214. package/src/viewer/scene/mesh/pick/PickMeshRenderer.js +210 -0
  215. package/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +142 -0
  216. package/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +186 -0
  217. package/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +116 -0
  218. package/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
  219. package/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +98 -0
  220. package/src/viewer/scene/metriqs/Metriqs.js +259 -0
  221. package/src/viewer/scene/model/ENTITY_FLAGS.js +21 -0
  222. package/src/viewer/scene/model/PerformanceModel.js +26 -0
  223. package/src/viewer/scene/model/RENDER_PASSES.js +34 -0
  224. package/src/viewer/scene/model/SceneModel.js +3817 -0
  225. package/src/viewer/scene/model/SceneModelEntity.js +478 -0
  226. package/src/viewer/scene/model/SceneModelMesh.js +160 -0
  227. package/src/viewer/scene/model/SceneModelTexture.js +17 -0
  228. package/src/viewer/scene/model/SceneModelTextureSet.js +17 -0
  229. package/src/viewer/scene/model/VBOSceneModel.js +26 -0
  230. package/src/viewer/scene/model/compression.js +227 -0
  231. package/src/viewer/scene/model/dtx/triangles/BindableDataTexture.js +31 -0
  232. package/src/viewer/scene/model/dtx/triangles/DataTextureGenerator.js +631 -0
  233. package/src/viewer/scene/model/dtx/triangles/DataTextureState.js +288 -0
  234. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureBuffer.js +31 -0
  235. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureLayer.js +1329 -0
  236. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureRenderers.js +278 -0
  237. package/src/viewer/scene/model/dtx/triangles/calculateUniquePositions.js +126 -0
  238. package/src/viewer/scene/model/dtx/triangles/dataTextureRamStats.js +54 -0
  239. package/src/viewer/scene/model/dtx/triangles/rebucketPositions.js +347 -0
  240. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorRenderer.js +633 -0
  241. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureDepthRenderer.js +475 -0
  242. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesColorRenderer.js +426 -0
  243. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesRenderer.js +430 -0
  244. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureNormalsRenderer.js +341 -0
  245. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureOcclusionRenderer.js +442 -0
  246. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickDepthRenderer.js +451 -0
  247. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickMeshRenderer.js +436 -0
  248. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js +502 -0
  249. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsRenderer.js +430 -0
  250. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSilhouetteRenderer.js +469 -0
  251. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js +451 -0
  252. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthRenderer.js +424 -0
  253. package/src/viewer/scene/model/index.js +3 -0
  254. package/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
  255. package/src/viewer/scene/model/vbo/VBOSceneModelRenderers.js +805 -0
  256. package/src/viewer/scene/model/vbo/float16.js +760 -0
  257. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingBuffer.js +21 -0
  258. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingLayer.js +744 -0
  259. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingRenderers.js +71 -0
  260. package/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingColorRenderer.js +116 -0
  261. package/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js +126 -0
  262. package/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingLayer.js +653 -0
  263. package/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingRenderers.js +71 -0
  264. package/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingColorRenderer.js +150 -0
  265. package/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js +128 -0
  266. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingBuffer.js +22 -0
  267. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingLayer.js +753 -0
  268. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingRenderers.js +116 -0
  269. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingColorRenderer.js +167 -0
  270. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js +135 -0
  271. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js +154 -0
  272. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js +146 -0
  273. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingShadowRenderer.js +108 -0
  274. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js +147 -0
  275. package/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingLayer.js +684 -0
  276. package/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingRenderers.js +146 -0
  277. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingColorRenderer.js +174 -0
  278. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingDepthRenderer.js +156 -0
  279. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js +151 -0
  280. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js +167 -0
  281. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js +151 -0
  282. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingShadowRenderer.js +121 -0
  283. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js +156 -0
  284. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthBufInitRenderer.js +351 -0
  285. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthRenderer.js +365 -0
  286. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingRenderers.js +71 -0
  287. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthBufInitRenderer.js +381 -0
  288. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthRenderer.js +374 -0
  289. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingRenderers.js +71 -0
  290. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingBuffer.js +26 -0
  291. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingLayer.js +1322 -0
  292. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingRenderers.js +322 -0
  293. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js +240 -0
  294. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js +271 -0
  295. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js +127 -0
  296. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js +129 -0
  297. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js +134 -0
  298. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js +237 -0
  299. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js +139 -0
  300. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js +127 -0
  301. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js +563 -0
  302. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js +143 -0
  303. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js +130 -0
  304. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js +119 -0
  305. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js +129 -0
  306. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js +108 -0
  307. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js +137 -0
  308. package/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingLayer.js +1167 -0
  309. package/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingRenderers.js +322 -0
  310. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js +253 -0
  311. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js +278 -0
  312. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js +125 -0
  313. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js +131 -0
  314. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js +134 -0
  315. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js +244 -0
  316. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js +130 -0
  317. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js +140 -0
  318. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js +130 -0
  319. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js +563 -0
  320. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js +148 -0
  321. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js +135 -0
  322. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js +130 -0
  323. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js +144 -0
  324. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js +113 -0
  325. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js +141 -0
  326. package/src/viewer/scene/nodes/Node.js +1383 -0
  327. package/src/viewer/scene/nodes/index.js +1 -0
  328. package/src/viewer/scene/paths/CubicBezierCurve.js +194 -0
  329. package/src/viewer/scene/paths/Curve.js +183 -0
  330. package/src/viewer/scene/paths/Path.js +239 -0
  331. package/src/viewer/scene/paths/QuadraticBezierCurve.js +161 -0
  332. package/src/viewer/scene/paths/SplineCurve.js +133 -0
  333. package/src/viewer/scene/paths/index.js +5 -0
  334. package/src/viewer/scene/postfx/SAO.js +543 -0
  335. package/src/viewer/scene/scene/Scene.js +2627 -0
  336. package/src/viewer/scene/sectionPlane/SectionPlane.js +194 -0
  337. package/src/viewer/scene/sectionPlane/index.js +1 -0
  338. package/src/viewer/scene/skybox/Skybox.js +123 -0
  339. package/src/viewer/scene/skybox/index.js +1 -0
  340. package/src/viewer/scene/stats.js +44 -0
  341. package/src/viewer/scene/utils/Cache.js +29 -0
  342. package/src/viewer/scene/utils/FileLoader.js +160 -0
  343. package/src/viewer/scene/utils/Loader.js +55 -0
  344. package/src/viewer/scene/utils/LoadingManager.js +86 -0
  345. package/src/viewer/scene/utils/Map.js +45 -0
  346. package/src/viewer/scene/utils/Queue.js +56 -0
  347. package/src/viewer/scene/utils/WorkerPool.js +73 -0
  348. package/src/viewer/scene/utils/index.js +6 -0
  349. package/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +650 -0
  350. package/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +1 -0
  351. package/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +31 -0
  352. package/src/viewer/scene/utils/textureTranscoders/index.js +2 -0
  353. package/src/viewer/scene/utils.js +452 -0
  354. package/src/viewer/scene/vfc/VFC.js +82 -0
  355. package/src/viewer/scene/vfc/VFCManager.js +54 -0
  356. package/src/viewer/scene/vfc/VFCState.js +391 -0
  357. package/src/viewer/scene/vfc/cluster-helper.js +134 -0
  358. package/src/viewer/scene/vfc/index.js +1 -0
  359. package/src/viewer/scene/vfc/rbush3d.js +848 -0
  360. package/src/viewer/scene/vfc/xeokit-cluster.js +418 -0
  361. package/src/viewer/scene/viewport/Viewport.js +212 -0
  362. package/src/viewer/scene/webgl/ArrayBuf.js +121 -0
  363. package/src/viewer/scene/webgl/Attribute.js +23 -0
  364. package/src/viewer/scene/webgl/Drawable.js +270 -0
  365. package/src/viewer/scene/webgl/FrameContext.js +313 -0
  366. package/src/viewer/scene/webgl/PickResult.js +339 -0
  367. package/src/viewer/scene/webgl/Pickable.js +69 -0
  368. package/src/viewer/scene/webgl/Program.js +181 -0
  369. package/src/viewer/scene/webgl/RenderBuffer.js +350 -0
  370. package/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
  371. package/src/viewer/scene/webgl/RenderFlags.js +203 -0
  372. package/src/viewer/scene/webgl/RenderState.js +40 -0
  373. package/src/viewer/scene/webgl/Renderer.js +1654 -0
  374. package/src/viewer/scene/webgl/Sampler.js +18 -0
  375. package/src/viewer/scene/webgl/Shader.js +49 -0
  376. package/src/viewer/scene/webgl/Texture2D.js +442 -0
  377. package/src/viewer/scene/webgl/convertConstant.js +244 -0
  378. package/src/viewer/scene/webgl/getExtension.js +32 -0
  379. package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +214 -0
  380. package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +426 -0
  381. package/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
  382. package/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +376 -0
  383. package/src/viewer/scene/webgl/webglEnums.js +61 -0
  384. package/src/viewer/scene/webglInfo.js +47 -0
@@ -0,0 +1,336 @@
1
+ import {MetaModel} from "./MetaModel.js";
2
+ import {MetaObject} from "./MetaObject.js";
3
+ import {PropertySet} from "./PropertySet.js";
4
+ import {math} from "../scene/math/math.js";
5
+
6
+ /**
7
+ * @desc Metadata corresponding to a {@link Scene}.
8
+ *
9
+ * * Located in {@link Viewer#metaScene}.
10
+ * * Contains {@link MetaModel}s and {@link MetaObject}s.
11
+ * * [Scene graph example with metadata](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneGraph_metadata)
12
+ */
13
+ class MetaScene {
14
+
15
+ /**
16
+ * @private
17
+ */
18
+ constructor(viewer, scene) {
19
+
20
+ /**
21
+ * The {@link Viewer}.
22
+ * @property viewer
23
+ * @type {Viewer}
24
+ */
25
+ this.viewer = viewer;
26
+
27
+ /**
28
+ * The {@link Scene}.
29
+ * @property scene
30
+ * @type {Scene}
31
+ */
32
+ this.scene = scene;
33
+
34
+ /**
35
+ * The {@link MetaModel}s belonging to this MetaScene, each mapped to its {@link MetaModel#modelId}.
36
+ *
37
+ * @type {{String:MetaModel}}
38
+ */
39
+ this.metaModels = {};
40
+
41
+ /**
42
+ * The {@link PropertySet}s belonging to this MetaScene, each mapped to its {@link PropertySet#id}.
43
+ *
44
+ * @type {{String:PropertySet}}
45
+ */
46
+ this.propertySets = {};
47
+
48
+ /**
49
+ * The {@link MetaObject}s belonging to this MetaScene, each mapped to its {@link MetaObject#id}.
50
+ *
51
+ * @type {{String:MetaObject}}
52
+ */
53
+ this.metaObjects = {};
54
+
55
+ /**
56
+ * The {@link MetaObject}s belonging to this MetaScene, each mapped to its {@link MetaObject#type}.
57
+ *
58
+ * @type {{String:MetaObject}}
59
+ */
60
+ this.metaObjectsByType = {};
61
+
62
+ /**
63
+ * The root {@link MetaObject}s belonging to this MetaScene, each mapped to its {@link MetaObject#id}.
64
+ *
65
+ * @type {{String:MetaObject}}
66
+ */
67
+ this.rootMetaObjects = {};
68
+
69
+ /**
70
+ * Subscriptions to events sent with {@link fire}.
71
+ * @private
72
+ */
73
+ this._eventSubs = {};
74
+ }
75
+
76
+ /**
77
+ * Subscribes to an event fired at this Viewer.
78
+ *
79
+ * @param {String} event The event
80
+ * @param {Function} callback Callback fired on the event
81
+ */
82
+ on(event, callback) {
83
+ let subs = this._eventSubs[event];
84
+ if (!subs) {
85
+ subs = [];
86
+ this._eventSubs[event] = subs;
87
+ }
88
+ subs.push(callback);
89
+ }
90
+
91
+ /**
92
+ * Fires an event at this Viewer.
93
+ *
94
+ * @param {String} event Event name
95
+ * @param {Object} value Event parameters
96
+ */
97
+ fire(event, value) {
98
+ const subs = this._eventSubs[event];
99
+ if (subs) {
100
+ for (let i = 0, len = subs.length; i < len; i++) {
101
+ subs[i](value);
102
+ }
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Unsubscribes from an event fired at this Viewer.
108
+ * @param event
109
+ */
110
+ off(event) { // TODO
111
+
112
+ }
113
+
114
+ /**
115
+ * Creates a {@link MetaModel} in this MetaScene.
116
+ *
117
+ * The MetaModel will contain a hierarchy of {@link MetaObject}s, created from the
118
+ * meta objects in ````metaModelData````.
119
+ *
120
+ * The meta object hierarchy in ````metaModelData```` is expected to be non-cyclic, with a single root. If the meta
121
+ * objects are cyclic, then this method will log an error and attempt to recover by creating a dummy root MetaObject
122
+ * of type "Model" and connecting all other MetaObjects as its direct children. If the meta objects contain multiple
123
+ * roots, then this method similarly attempts to recover by creating a dummy root MetaObject of type "Model" and
124
+ * connecting all the root MetaObjects as its children.
125
+ *
126
+ * @param {String} modelId ID for the new {@link MetaModel}, which will have {@link MetaModel#id} set to this value.
127
+ * @param {Object} metaModelData Data for the {@link MetaModel}.
128
+ * @param {Object} [options] Options for creating the {@link MetaModel}.
129
+ * @param {Object} [options.includeTypes] When provided, only create {@link MetaObject}s with types in this list.
130
+ * @param {Object} [options.excludeTypes] When provided, never create {@link MetaObject}s with types in this list.
131
+ * @param {Boolean} [options.globalizeObjectIds=false] Whether to globalize each {@link MetaObject#id}. Set this ````true```` when you need to load multiple instances of the same meta model, to avoid ID clashes between the meta objects in the different instances.
132
+ * @returns {MetaModel} The new MetaModel.
133
+ */
134
+ createMetaModel(modelId, metaModelData, options = {}) {
135
+
136
+ const metaModel = new MetaModel({ // Registers MetaModel in #metaModels
137
+ metaScene: this,
138
+ id: modelId,
139
+ projectId: metaModelData.projectId || "none",
140
+ revisionId: metaModelData.revisionId || "none",
141
+ author: metaModelData.author || "none",
142
+ createdAt: metaModelData.createdAt || "none",
143
+ creatingApplication: metaModelData.creatingApplication || "none",
144
+ schema: metaModelData.schema || "none",
145
+ propertySets: []
146
+ });
147
+
148
+ metaModel.loadData(metaModelData);
149
+
150
+ metaModel.finalize();
151
+
152
+ return metaModel;
153
+ }
154
+
155
+ /**
156
+ * Removes a {@link MetaModel} from this MetaScene.
157
+ *
158
+ * Fires a "metaModelDestroyed" event with the value of the {@link MetaModel#id}.
159
+ *
160
+ * @param {String} id ID of the target {@link MetaModel}.
161
+ */
162
+ destroyMetaModel(id) {
163
+
164
+ const metaModel = this.metaModels[id];
165
+ if (!metaModel) {
166
+ return;
167
+ }
168
+
169
+ // Remove global PropertySets
170
+
171
+ if (metaModel.propertySets) {
172
+ for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
173
+ const propertySet = metaModel.propertySets[i];
174
+ if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
175
+ delete this.propertySets[propertySet.id];
176
+ } else {
177
+ const newMetaModels = [];
178
+ for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
179
+ if (propertySet.metaModels[j].id !== id) {
180
+ newMetaModels.push(propertySet.metaModels[j]);
181
+ }
182
+ }
183
+ propertySet.metaModels = newMetaModels;
184
+ }
185
+ }
186
+ }
187
+
188
+ // Remove MetaObjects
189
+
190
+ if (metaModel.metaObjects) {
191
+ for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
192
+ const metaObject = metaModel.metaObjects[i];
193
+ const type = metaObject.type;
194
+ const id = metaObject.id;
195
+ if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
196
+ delete this.metaObjects[id];
197
+ if (!metaObject.parent) {
198
+ delete this.rootMetaObjects[id];
199
+ }
200
+ } else {
201
+ const newMetaModels = [];
202
+ const metaModelId = metaModel.id;
203
+ for (let j = 0, lenj = metaObject.metaModels.length; j < lenj; j++) {
204
+ if (metaObject.metaModels[j].id !== metaModelId) {
205
+ newMetaModels.push(metaObject.metaModels[j]);
206
+ }
207
+ }
208
+ metaObject.metaModels = newMetaModels;
209
+ }
210
+ }
211
+ }
212
+
213
+ // Re-link entire MetaObject parent/child hierarchy
214
+
215
+ for (let objectId in this.metaObjects) {
216
+ const metaObject = this.metaObjects[objectId];
217
+ if (metaObject.children) {
218
+ metaObject.children = [];
219
+ }
220
+
221
+ // Re-link each MetaObject's property sets
222
+
223
+ if (metaObject.propertySets) {
224
+ metaObject.propertySets = [];
225
+ }
226
+ if (metaObject.propertySetIds) {
227
+ for (let i = 0, len = metaObject.propertySetIds.length; i < len; i++) {
228
+ const propertySetId = metaObject.propertySetIds[i];
229
+ const propertySet = this.propertySets[propertySetId];
230
+ metaObject.propertySets.push(propertySet);
231
+ }
232
+ }
233
+ }
234
+
235
+ this.metaObjectsByType = {};
236
+
237
+ for (let objectId in this.metaObjects) {
238
+ const metaObject = this.metaObjects[objectId];
239
+ const type = metaObject.type;
240
+ if (metaObject.children) {
241
+ metaObject.children = null;
242
+ }
243
+ (this.metaObjectsByType[type] || (this.metaObjectsByType[type] = {}))[objectId] = metaObject;
244
+ }
245
+
246
+ for (let objectId in this.metaObjects) {
247
+ const metaObject = this.metaObjects[objectId];
248
+ if (metaObject.parentId) {
249
+ const parentMetaObject = this.metaObjects[metaObject.parentId];
250
+ if (parentMetaObject) {
251
+ metaObject.parent = parentMetaObject;
252
+ (parentMetaObject.children || (parentMetaObject.children = [])).push(metaObject);
253
+ }
254
+ }
255
+ }
256
+
257
+ delete this.metaModels[id];
258
+
259
+ this.fire("metaModelDestroyed", id);
260
+ }
261
+
262
+ /**
263
+ * Gets the {@link MetaObject#id}s of the {@link MetaObject}s that have the given {@link MetaObject#type}.
264
+ *
265
+ * @param {String} type The type.
266
+ * @returns {String[]} Array of {@link MetaObject#id}s.
267
+ */
268
+ getObjectIDsByType(type) {
269
+ const metaObjects = this.metaObjectsByType[type];
270
+ return metaObjects ? Object.keys(metaObjects) : [];
271
+ }
272
+
273
+ /**
274
+ * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the given subtree.
275
+ *
276
+ * @param {String} id ID of the root {@link MetaObject} of the given subtree.
277
+ * @param {String[]} [includeTypes] Optional list of types to include.
278
+ * @param {String[]} [excludeTypes] Optional list of types to exclude.
279
+ * @returns {String[]} Array of {@link MetaObject#id}s.
280
+ */
281
+ getObjectIDsInSubtree(id, includeTypes, excludeTypes) {
282
+
283
+ const list = [];
284
+ const metaObject = this.metaObjects[id];
285
+ const includeMask = (includeTypes && includeTypes.length > 0) ? arrayToMap(includeTypes) : null;
286
+ const excludeMask = (excludeTypes && excludeTypes.length > 0) ? arrayToMap(excludeTypes) : null;
287
+
288
+ const visit = (metaObject) => {
289
+ if (!metaObject) {
290
+ return;
291
+ }
292
+ var include = true;
293
+ if (excludeMask && excludeMask[metaObject.type]) {
294
+ include = false;
295
+ } else if (includeMask && (!includeMask[metaObject.type])) {
296
+ include = false;
297
+ }
298
+ if (include) {
299
+ list.push(metaObject.id);
300
+ }
301
+ const children = metaObject.children;
302
+ if (children) {
303
+ for (var i = 0, len = children.length; i < len; i++) {
304
+ visit(children[i]);
305
+ }
306
+ }
307
+ }
308
+
309
+ visit(metaObject);
310
+ return list;
311
+ }
312
+
313
+ /**
314
+ * Iterates over the {@link MetaObject}s within the subtree.
315
+ *
316
+ * @param {String} id ID of root {@link MetaObject}.
317
+ * @param {Function} callback Callback fired at each {@link MetaObject}.
318
+ */
319
+ withMetaObjectsInSubtree(id, callback) {
320
+ const metaObject = this.metaObjects[id];
321
+ if (!metaObject) {
322
+ return;
323
+ }
324
+ metaObject.withMetaObjectsInSubtree(callback);
325
+ }
326
+ }
327
+
328
+ function arrayToMap(array) {
329
+ const map = {};
330
+ for (var i = 0, len = array.length; i < len; i++) {
331
+ map[array[i]] = true;
332
+ }
333
+ return map;
334
+ }
335
+
336
+ export {MetaScene};
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @desc A property within a {@link PropertySet}.
3
+ *
4
+ * @class Property
5
+ */
6
+ class Property {
7
+
8
+ /**
9
+ * @private
10
+ */
11
+ constructor(name, value, type, valueType, description) {
12
+
13
+ /**
14
+ * The name of this property.
15
+ *
16
+ * @property name
17
+ * @type {String}
18
+ */
19
+ this.name = name;
20
+
21
+ /**
22
+ * The type of this property.
23
+ *
24
+ * @property type
25
+ * @type {Number|String}
26
+ */
27
+ this.type = type
28
+
29
+ /**
30
+ * The value of this property.
31
+ *
32
+ * @property value
33
+ * @type {*}
34
+ */
35
+ this.value = value
36
+
37
+ /**
38
+ * The type of this property's value.
39
+ *
40
+ * @property valueType
41
+ * @type {Number|String}
42
+ */
43
+ this.valueType = valueType;
44
+
45
+ /**
46
+ * Informative text to explain the property.
47
+ *
48
+ * @property name
49
+ * @type {String}
50
+ */
51
+ this.description = description;
52
+ }
53
+ }
54
+
55
+ export {Property};
@@ -0,0 +1,77 @@
1
+ import {Property} from "./Property.js";
2
+
3
+ /**
4
+ * @desc A set of properties associated with one or more {@link MetaObject}s.
5
+ *
6
+ * A PropertySet is created within {@link MetaScene#createMetaModel} and belongs to a {@link MetaModel}.
7
+ *
8
+ * Each PropertySet is registered by {@link PropertySet#id} in {@link MetaScene#propertySets} and {@link MetaModel#propertySets}.
9
+ *
10
+ * @class PropertySet
11
+ */
12
+ class PropertySet {
13
+
14
+ /**
15
+ * @private
16
+ */
17
+ constructor(params) {
18
+
19
+ /**
20
+ * Globally-unique ID for this PropertySet.
21
+ *
22
+ * PropertySet instances are registered by this ID in {@link MetaScene#propertySets} and {@link MetaModel#propertySets}.
23
+ *
24
+ * @property id
25
+ * @type {String}
26
+ */
27
+ this.id = params.id;
28
+
29
+ /**
30
+ * ID of the corresponding object within the originating system, if any.
31
+ *
32
+ * @type {String}
33
+ * @abstract
34
+ */
35
+ this.originalSystemId = params.originalSystemId;
36
+
37
+ /**
38
+ * The MetaModels that share this PropertySet.
39
+ * @type {MetaModel[]}
40
+ */
41
+ this.metaModels = [];
42
+
43
+ /**
44
+ * Human-readable name of this PropertySet.
45
+ *
46
+ * @property name
47
+ * @type {String}
48
+ */
49
+ this.name = params.name;
50
+
51
+ /**
52
+ * Type of this PropertySet.
53
+ *
54
+ * @property type
55
+ * @type {String}
56
+ */
57
+ this.type = params.type;
58
+
59
+ /**
60
+ * Properties within this PropertySet.
61
+ *
62
+ * @property properties
63
+ * @type {Property[]}
64
+ */
65
+ this.properties = [];
66
+
67
+ if (params.properties) {
68
+ const properties = params.properties;
69
+ for (let i = 0, len = properties.length; i < len; i++) {
70
+ const property = properties[i];
71
+ this.properties.push(new Property(property.name, property.value, property.type, property.valueType, property.description));
72
+ }
73
+ }
74
+ }
75
+ }
76
+
77
+ export {PropertySet};