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

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 (418) hide show
  1. package/dist/xeokit-sdk.cjs.js +30 -9
  2. package/dist/xeokit-sdk.es.js +30 -9
  3. package/dist/xeokit-sdk.es5.js +67 -65
  4. package/dist/xeokit-sdk.min.cjs.js +1 -1
  5. package/dist/xeokit-sdk.min.es.js +1 -1
  6. package/dist/xeokit-sdk.min.es5.js +1 -1
  7. package/package.json +1 -1
  8. package/src/viewer/metadata/MetaModel.js +15 -0
  9. package/src/viewer/metadata/MetaScene.js +15 -9
  10. package/src/plugins/XKTLoaderPlugin/parsers/ParserV11.js +0 -663
  11. package/src/src/extras/ContextMenu/ContextMenu.js +0 -907
  12. package/src/src/extras/ContextMenu/index.js +0 -1
  13. package/src/src/extras/MarqueePicker/MarqueePicker.js +0 -352
  14. package/src/src/extras/MarqueePicker/MarqueePickerMouseControl.js +0 -174
  15. package/src/src/extras/MarqueePicker/index.js +0 -2
  16. package/src/src/extras/PointerLens/PointerLens.js +0 -312
  17. package/src/src/extras/PointerLens/index.js +0 -1
  18. package/src/src/extras/collision/ObjectsKdTree3.js +0 -149
  19. package/src/src/extras/collision/index.js +0 -1
  20. package/src/src/extras/index.js +0 -4
  21. package/src/src/index.js +0 -3
  22. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +0 -731
  23. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +0 -84
  24. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js +0 -435
  25. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +0 -406
  26. package/src/src/plugins/AngleMeasurementsPlugin/index.js +0 -3
  27. package/src/src/plugins/AnnotationsPlugin/Annotation.js +0 -368
  28. package/src/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +0 -583
  29. package/src/src/plugins/AnnotationsPlugin/index.js +0 -1
  30. package/src/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +0 -333
  31. package/src/src/plugins/AxisGizmoPlugin/index.js +0 -1
  32. package/src/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +0 -977
  33. package/src/src/plugins/BCFViewpointsPlugin/index.js +0 -1
  34. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +0 -29
  35. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +0 -751
  36. package/src/src/plugins/CityJSONLoaderPlugin/index.js +0 -1
  37. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +0 -963
  38. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +0 -84
  39. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js +0 -399
  40. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +0 -505
  41. package/src/src/plugins/DistanceMeasurementsPlugin/index.js +0 -3
  42. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +0 -639
  43. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +0 -436
  44. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +0 -247
  45. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +0 -167
  46. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +0 -1
  47. package/src/src/plugins/FastNavPlugin/FastNavPlugin.js +0 -429
  48. package/src/src/plugins/FastNavPlugin/index.js +0 -1
  49. package/src/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +0 -140
  50. package/src/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +0 -421
  51. package/src/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +0 -669
  52. package/src/src/plugins/GLTFLoaderPlugin/index.js +0 -2
  53. package/src/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +0 -58
  54. package/src/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +0 -563
  55. package/src/src/plugins/LASLoaderPlugin/index.js +0 -1
  56. package/src/src/plugins/LASLoaderPlugin/loadLASHeader.js +0 -183
  57. package/src/src/plugins/NavCubePlugin/CubeTextureCanvas.js +0 -290
  58. package/src/src/plugins/NavCubePlugin/NavCubePlugin.js +0 -753
  59. package/src/src/plugins/NavCubePlugin/index.js +0 -1
  60. package/src/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +0 -145
  61. package/src/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +0 -777
  62. package/src/src/plugins/OBJLoaderPlugin/index.js +0 -1
  63. package/src/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +0 -33
  64. package/src/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +0 -274
  65. package/src/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +0 -313
  66. package/src/src/plugins/STLLoaderPlugin/index.js +0 -2
  67. package/src/src/plugins/SectionPlanesPlugin/Control.js +0 -1328
  68. package/src/src/plugins/SectionPlanesPlugin/Overview.js +0 -249
  69. package/src/src/plugins/SectionPlanesPlugin/Plane.js +0 -169
  70. package/src/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +0 -404
  71. package/src/src/plugins/SectionPlanesPlugin/index.js +0 -1
  72. package/src/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +0 -134
  73. package/src/src/plugins/SkyboxesPlugin/index.js +0 -1
  74. package/src/src/plugins/StoreyViewsPlugin/Storey.js +0 -84
  75. package/src/src/plugins/StoreyViewsPlugin/StoreyMap.js +0 -57
  76. package/src/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +0 -773
  77. package/src/src/plugins/StoreyViewsPlugin/index.js +0 -1
  78. package/src/src/plugins/TreeViewPlugin/RenderService.js +0 -169
  79. package/src/src/plugins/TreeViewPlugin/TreeViewNode.js +0 -101
  80. package/src/src/plugins/TreeViewPlugin/TreeViewPlugin.js +0 -1370
  81. package/src/src/plugins/TreeViewPlugin/index.js +0 -1
  82. package/src/src/plugins/ViewCullPlugin/ViewCullPlugin.js +0 -295
  83. package/src/src/plugins/ViewCullPlugin/index.js +0 -1
  84. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +0 -58
  85. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +0 -942
  86. package/src/src/plugins/WebIFCLoaderPlugin/index.js +0 -1
  87. package/src/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +0 -95
  88. package/src/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +0 -1194
  89. package/src/src/plugins/XKTLoaderPlugin/index.js +0 -2
  90. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +0 -169
  91. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +0 -660
  92. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV11.js +0 -663
  93. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +0 -230
  94. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +0 -223
  95. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +0 -283
  96. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +0 -246
  97. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +0 -301
  98. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +0 -439
  99. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +0 -563
  100. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +0 -518
  101. package/src/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +0 -2
  102. package/src/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +0 -238
  103. package/src/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +0 -1279
  104. package/src/src/plugins/XML3DLoaderPlugin/index.js +0 -1
  105. package/src/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +0 -11
  106. package/src/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +0 -2060
  107. package/src/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +0 -2155
  108. package/src/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +0 -1002
  109. package/src/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +0 -64
  110. package/src/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +0 -153
  111. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +0 -267
  112. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +0 -553
  113. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +0 -991
  114. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +0 -49
  115. package/src/src/plugins/index.js +0 -21
  116. package/src/src/plugins/lib/culling/ObjectCullStates.js +0 -208
  117. package/src/src/plugins/lib/earcut.js +0 -677
  118. package/src/src/plugins/lib/html/Dot.js +0 -179
  119. package/src/src/plugins/lib/html/Label.js +0 -174
  120. package/src/src/plugins/lib/html/Wire.js +0 -220
  121. package/src/src/viewer/Configs.js +0 -127
  122. package/src/src/viewer/Plugin.js +0 -233
  123. package/src/src/viewer/Viewer.js +0 -542
  124. package/src/src/viewer/index.js +0 -5
  125. package/src/src/viewer/localization/LocaleService.js +0 -475
  126. package/src/src/viewer/metadata/IFCObjectDefaultColors.js +0 -163
  127. package/src/src/viewer/metadata/IFCObjectDefaults.js +0 -17
  128. package/src/src/viewer/metadata/MetaModel.js +0 -414
  129. package/src/src/viewer/metadata/MetaObject.js +0 -223
  130. package/src/src/viewer/metadata/MetaScene.js +0 -336
  131. package/src/src/viewer/metadata/Property.js +0 -55
  132. package/src/src/viewer/metadata/PropertySet.js +0 -77
  133. package/src/src/viewer/scene/Bitmap/Bitmap.js +0 -473
  134. package/src/src/viewer/scene/Bitmap/index.js +0 -1
  135. package/src/src/viewer/scene/CameraControl/CameraControl.js +0 -1750
  136. package/src/src/viewer/scene/CameraControl/lib/CameraUpdater.js +0 -312
  137. package/src/src/viewer/scene/CameraControl/lib/controllers/PanController.js +0 -112
  138. package/src/src/viewer/scene/CameraControl/lib/controllers/PickController.js +0 -265
  139. package/src/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +0 -384
  140. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +0 -122
  141. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +0 -183
  142. package/src/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +0 -68
  143. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +0 -345
  144. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +0 -376
  145. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +0 -288
  146. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +0 -235
  147. package/src/src/viewer/scene/Component.js +0 -915
  148. package/src/src/viewer/scene/Entity.js +0 -502
  149. package/src/src/viewer/scene/ImagePlane/ImagePlane.js +0 -570
  150. package/src/src/viewer/scene/ImagePlane/index.js +0 -1
  151. package/src/src/viewer/scene/LineSet/LineSet.js +0 -163
  152. package/src/src/viewer/scene/LineSet/index.js +0 -1
  153. package/src/src/viewer/scene/camera/Camera.js +0 -912
  154. package/src/src/viewer/scene/camera/CameraFlightAnimation.js +0 -669
  155. package/src/src/viewer/scene/camera/CameraPath.js +0 -194
  156. package/src/src/viewer/scene/camera/CameraPathAnimation.js +0 -326
  157. package/src/src/viewer/scene/camera/CustomProjection.js +0 -149
  158. package/src/src/viewer/scene/camera/Frustum.js +0 -316
  159. package/src/src/viewer/scene/camera/Ortho.js +0 -286
  160. package/src/src/viewer/scene/camera/Perspective.js +0 -304
  161. package/src/src/viewer/scene/camera/index.js +0 -2
  162. package/src/src/viewer/scene/canvas/Canvas.js +0 -490
  163. package/src/src/viewer/scene/canvas/Spinner.js +0 -323
  164. package/src/src/viewer/scene/constants/constants.js +0 -371
  165. package/src/src/viewer/scene/core.js +0 -268
  166. package/src/src/viewer/scene/geometry/Geometry.js +0 -33
  167. package/src/src/viewer/scene/geometry/ReadableGeometry.js +0 -682
  168. package/src/src/viewer/scene/geometry/VBOGeometry.js +0 -319
  169. package/src/src/viewer/scene/geometry/builders/buildBoxGeometry.js +0 -238
  170. package/src/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +0 -106
  171. package/src/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +0 -271
  172. package/src/src/viewer/scene/geometry/builders/buildGridGeometry.js +0 -102
  173. package/src/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +0 -168
  174. package/src/src/viewer/scene/geometry/builders/buildSphereGeometry.js +0 -161
  175. package/src/src/viewer/scene/geometry/builders/buildTorusGeometry.js +0 -172
  176. package/src/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +0 -1721
  177. package/src/src/viewer/scene/geometry/builders/index.js +0 -8
  178. package/src/src/viewer/scene/geometry/index.js +0 -4
  179. package/src/src/viewer/scene/geometry/loaders/index.js +0 -2
  180. package/src/src/viewer/scene/geometry/loaders/load3DSGeometry.js +0 -103
  181. package/src/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +0 -130
  182. package/src/src/viewer/scene/index.js +0 -21
  183. package/src/src/viewer/scene/input/Input.js +0 -1333
  184. package/src/src/viewer/scene/libs/k3d.js +0 -1032
  185. package/src/src/viewer/scene/lights/AmbientLight.js +0 -175
  186. package/src/src/viewer/scene/lights/CubeTexture.js +0 -156
  187. package/src/src/viewer/scene/lights/DirLight.js +0 -314
  188. package/src/src/viewer/scene/lights/Light.js +0 -29
  189. package/src/src/viewer/scene/lights/LightMap.js +0 -77
  190. package/src/src/viewer/scene/lights/PointLight.js +0 -395
  191. package/src/src/viewer/scene/lights/ReflectionMap.js +0 -79
  192. package/src/src/viewer/scene/lights/Shadow.js +0 -138
  193. package/src/src/viewer/scene/lights/index.js +0 -5
  194. package/src/src/viewer/scene/marker/Marker.js +0 -383
  195. package/src/src/viewer/scene/marker/SpriteMarker.js +0 -356
  196. package/src/src/viewer/scene/marker/index.js +0 -2
  197. package/src/src/viewer/scene/materials/EdgeMaterial.js +0 -359
  198. package/src/src/viewer/scene/materials/EmphasisMaterial.js +0 -613
  199. package/src/src/viewer/scene/materials/Fresnel.js +0 -222
  200. package/src/src/viewer/scene/materials/LambertMaterial.js +0 -378
  201. package/src/src/viewer/scene/materials/LinesMaterial.js +0 -169
  202. package/src/src/viewer/scene/materials/Material.js +0 -39
  203. package/src/src/viewer/scene/materials/MetallicMaterial.js +0 -820
  204. package/src/src/viewer/scene/materials/PhongMaterial.js +0 -860
  205. package/src/src/viewer/scene/materials/PointsMaterial.js +0 -409
  206. package/src/src/viewer/scene/materials/SpecularMaterial.js +0 -807
  207. package/src/src/viewer/scene/materials/Texture.js +0 -513
  208. package/src/src/viewer/scene/materials/index.js +0 -8
  209. package/src/src/viewer/scene/math/Frustum.js +0 -118
  210. package/src/src/viewer/scene/math/buildEdgeIndices.js +0 -162
  211. package/src/src/viewer/scene/math/geometryCompressionUtils.js +0 -365
  212. package/src/src/viewer/scene/math/index.js +0 -3
  213. package/src/src/viewer/scene/math/math.js +0 -5386
  214. package/src/src/viewer/scene/math/rtcCoords.js +0 -139
  215. package/src/src/viewer/scene/mementos/CameraMemento.js +0 -200
  216. package/src/src/viewer/scene/mementos/ModelMemento.js +0 -263
  217. package/src/src/viewer/scene/mementos/ObjectsMemento.js +0 -259
  218. package/src/src/viewer/scene/mementos/index.js +0 -3
  219. package/src/src/viewer/scene/mesh/Mesh.js +0 -2202
  220. package/src/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -996
  221. package/src/src/viewer/scene/mesh/draw/DrawShaderSource.js +0 -1570
  222. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -259
  223. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -159
  224. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -286
  225. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -262
  226. package/src/src/viewer/scene/mesh/index.js +0 -1
  227. package/src/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -217
  228. package/src/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +0 -157
  229. package/src/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -223
  230. package/src/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +0 -151
  231. package/src/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -200
  232. package/src/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +0 -124
  233. package/src/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
  234. package/src/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +0 -98
  235. package/src/src/viewer/scene/metriqs/Metriqs.js +0 -259
  236. package/src/src/viewer/scene/model/ENTITY_FLAGS.js +0 -21
  237. package/src/src/viewer/scene/model/PerformanceModel.js +0 -26
  238. package/src/src/viewer/scene/model/RENDER_PASSES.js +0 -34
  239. package/src/src/viewer/scene/model/SceneModel.js +0 -4018
  240. package/src/src/viewer/scene/model/SceneModelEntity.js +0 -715
  241. package/src/src/viewer/scene/model/SceneModelMesh.js +0 -341
  242. package/src/src/viewer/scene/model/SceneModelTexture.js +0 -38
  243. package/src/src/viewer/scene/model/SceneModelTextureSet.js +0 -59
  244. package/src/src/viewer/scene/model/SceneModelTransform.js +0 -404
  245. package/src/src/viewer/scene/model/VBOSceneModel.js +0 -26
  246. package/src/src/viewer/scene/model/calculateUniquePositions.js +0 -126
  247. package/src/src/viewer/scene/model/compression.js +0 -227
  248. package/src/src/viewer/scene/model/dtx/BindableDataTexture.js +0 -31
  249. package/src/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +0 -27
  250. package/src/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +0 -891
  251. package/src/src/viewer/scene/model/dtx/lines/DTXLinesState.js +0 -46
  252. package/src/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +0 -411
  253. package/src/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +0 -49
  254. package/src/src/viewer/scene/model/dtx/lines/rebucketPositions.js +0 -208
  255. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +0 -389
  256. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +0 -65
  257. package/src/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +0 -1322
  258. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +0 -46
  259. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +0 -250
  260. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +0 -518
  261. package/src/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +0 -54
  262. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +0 -619
  263. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +0 -464
  264. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +0 -414
  265. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +0 -422
  266. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +0 -345
  267. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +0 -436
  268. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +0 -462
  269. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +0 -436
  270. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +0 -455
  271. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +0 -440
  272. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +0 -307
  273. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +0 -465
  274. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +0 -466
  275. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +0 -427
  276. package/src/src/viewer/scene/model/index.js +0 -5
  277. package/src/src/viewer/scene/model/rebucketPositions.js +0 -354
  278. package/src/src/viewer/scene/model/vbo/ScratchMemory.js +0 -63
  279. package/src/src/viewer/scene/model/vbo/VBORenderer.js +0 -646
  280. package/src/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +0 -699
  281. package/src/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +0 -19
  282. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +0 -316
  283. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +0 -114
  284. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +0 -99
  285. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +0 -124
  286. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +0 -311
  287. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +0 -309
  288. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +0 -24
  289. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js +0 -20
  290. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +0 -718
  291. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +0 -24
  292. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +0 -168
  293. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +0 -136
  294. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +0 -156
  295. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +0 -148
  296. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +0 -144
  297. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +0 -107
  298. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +0 -146
  299. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +0 -309
  300. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +0 -303
  301. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +0 -24
  302. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +0 -1257
  303. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +0 -131
  304. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +0 -135
  305. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +0 -12
  306. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +0 -375
  307. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +0 -34
  308. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +0 -238
  309. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +0 -270
  310. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +0 -126
  311. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +0 -235
  312. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +0 -139
  313. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +0 -125
  314. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +0 -561
  315. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +0 -144
  316. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +0 -130
  317. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -121
  318. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -131
  319. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +0 -107
  320. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -136
  321. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +0 -311
  322. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +0 -308
  323. package/src/src/viewer/scene/model/vbo/float16.js +0 -760
  324. package/src/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +0 -704
  325. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +0 -148
  326. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +0 -26
  327. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +0 -139
  328. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +0 -127
  329. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +0 -331
  330. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +0 -316
  331. package/src/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +0 -728
  332. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +0 -174
  333. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +0 -156
  334. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +0 -149
  335. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +0 -170
  336. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +0 -152
  337. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +0 -26
  338. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +0 -174
  339. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +0 -119
  340. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +0 -154
  341. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +0 -330
  342. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +0 -311
  343. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +0 -150
  344. package/src/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +0 -1190
  345. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +0 -136
  346. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +0 -137
  347. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +0 -12
  348. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +0 -376
  349. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +0 -253
  350. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +0 -278
  351. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +0 -126
  352. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +0 -244
  353. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +0 -130
  354. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +0 -29
  355. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +0 -138
  356. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +0 -128
  357. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +0 -561
  358. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +0 -149
  359. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +0 -136
  360. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -130
  361. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -145
  362. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +0 -113
  363. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -139
  364. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +0 -342
  365. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +0 -325
  366. package/src/src/viewer/scene/nodes/Node.js +0 -1383
  367. package/src/src/viewer/scene/nodes/index.js +0 -1
  368. package/src/src/viewer/scene/paths/CubicBezierCurve.js +0 -194
  369. package/src/src/viewer/scene/paths/Curve.js +0 -183
  370. package/src/src/viewer/scene/paths/Path.js +0 -239
  371. package/src/src/viewer/scene/paths/QuadraticBezierCurve.js +0 -161
  372. package/src/src/viewer/scene/paths/SplineCurve.js +0 -133
  373. package/src/src/viewer/scene/paths/index.js +0 -5
  374. package/src/src/viewer/scene/postfx/SAO.js +0 -543
  375. package/src/src/viewer/scene/scene/Scene.js +0 -2802
  376. package/src/src/viewer/scene/sectionPlane/SectionPlane.js +0 -198
  377. package/src/src/viewer/scene/sectionPlane/SectionPlaneCache.js +0 -101
  378. package/src/src/viewer/scene/sectionPlane/index.js +0 -1
  379. package/src/src/viewer/scene/skybox/Skybox.js +0 -123
  380. package/src/src/viewer/scene/skybox/index.js +0 -1
  381. package/src/src/viewer/scene/stats.js +0 -44
  382. package/src/src/viewer/scene/utils/Cache.js +0 -29
  383. package/src/src/viewer/scene/utils/FileLoader.js +0 -161
  384. package/src/src/viewer/scene/utils/Loader.js +0 -55
  385. package/src/src/viewer/scene/utils/LoadingManager.js +0 -86
  386. package/src/src/viewer/scene/utils/Map.js +0 -45
  387. package/src/src/viewer/scene/utils/Queue.js +0 -56
  388. package/src/src/viewer/scene/utils/WorkerPool.js +0 -73
  389. package/src/src/viewer/scene/utils/index.js +0 -6
  390. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +0 -650
  391. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +0 -1
  392. package/src/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +0 -31
  393. package/src/src/viewer/scene/utils/textureTranscoders/index.js +0 -2
  394. package/src/src/viewer/scene/utils.js +0 -453
  395. package/src/src/viewer/scene/viewport/Viewport.js +0 -212
  396. package/src/src/viewer/scene/webgl/ArrayBuf.js +0 -121
  397. package/src/src/viewer/scene/webgl/Attribute.js +0 -23
  398. package/src/src/viewer/scene/webgl/Drawable.js +0 -270
  399. package/src/src/viewer/scene/webgl/FrameContext.js +0 -313
  400. package/src/src/viewer/scene/webgl/PickResult.js +0 -364
  401. package/src/src/viewer/scene/webgl/Pickable.js +0 -69
  402. package/src/src/viewer/scene/webgl/Program.js +0 -181
  403. package/src/src/viewer/scene/webgl/RenderBuffer.js +0 -378
  404. package/src/src/viewer/scene/webgl/RenderBufferManager.js +0 -34
  405. package/src/src/viewer/scene/webgl/RenderFlags.js +0 -203
  406. package/src/src/viewer/scene/webgl/RenderState.js +0 -40
  407. package/src/src/viewer/scene/webgl/Renderer.js +0 -1781
  408. package/src/src/viewer/scene/webgl/Sampler.js +0 -18
  409. package/src/src/viewer/scene/webgl/Shader.js +0 -49
  410. package/src/src/viewer/scene/webgl/Texture2D.js +0 -442
  411. package/src/src/viewer/scene/webgl/convertConstant.js +0 -244
  412. package/src/src/viewer/scene/webgl/getExtension.js +0 -32
  413. package/src/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +0 -214
  414. package/src/src/viewer/scene/webgl/occlusion/OcclusionTester.js +0 -426
  415. package/src/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -324
  416. package/src/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -376
  417. package/src/src/viewer/scene/webgl/webglEnums.js +0 -61
  418. package/src/src/viewer/scene/webglInfo.js +0 -47
@@ -1,1383 +0,0 @@
1
- import {utils} from '../utils.js';
2
- import {Component} from '../Component.js';
3
- import {math} from '../math/math.js';
4
-
5
- const angleAxis = math.vec4(4);
6
- const q1 = math.vec4();
7
- const q2 = math.vec4();
8
- const xAxis = math.vec3([1, 0, 0]);
9
- const yAxis = math.vec3([0, 1, 0]);
10
- const zAxis = math.vec3([0, 0, 1]);
11
-
12
- const veca = math.vec3(3);
13
- const vecb = math.vec3(3);
14
-
15
- const identityMat = math.identityMat4();
16
-
17
- /**
18
- * @desc An {@link Entity} that is a scene graph node that can have child Nodes and {@link Mesh}es.
19
- *
20
- * ## Usage
21
- *
22
- * The example below is the same as the one given for {@link Mesh}, since the two classes work together. In this example,
23
- * we'll create a scene graph in which a root Node represents a group and the {@link Mesh}s are leaves. Since Node
24
- * implements {@link Entity}, we can designate the root Node as a model, causing it to be registered by its ID in {@link Scene#models}.
25
- *
26
- * Since {@link Mesh} also implements {@link Entity}, we can designate the leaf {@link Mesh}es as objects, causing them to
27
- * be registered by their IDs in {@link Scene#objects}.
28
- *
29
- * We can then find those {@link Entity} types in {@link Scene#models} and {@link Scene#objects}.
30
- *
31
- * We can also update properties of our object-Meshes via calls to {@link Scene#setObjectsHighlighted} etc.
32
- *
33
- * [[Run this example](/examples/#sceneRepresentation_SceneGraph)]
34
- *
35
- * ````javascript
36
- * import {Viewer, Mesh, Node, PhongMaterial} from "xeokit-sdk.es.js";
37
- *
38
- * const viewer = new Viewer({
39
- * canvasId: "myCanvas"
40
- * });
41
- *
42
- * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];
43
- * viewer.scene.camera.look = [0, -5.75, 0];
44
- * viewer.scene.camera.up = [0.37, 0.91, -0.11];
45
- *
46
- * new Node(viewer.scene, {
47
- * id: "table",
48
- * isModel: true, // <---------- Node represents a model, so is registered by ID in viewer.scene.models
49
- * rotation: [0, 50, 0],
50
- * position: [0, 0, 0],
51
- * scale: [1, 1, 1],
52
- *
53
- * children: [
54
- *
55
- * new Mesh(viewer.scene, { // Red table leg
56
- * id: "redLeg",
57
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
58
- * position: [-4, -6, -4],
59
- * scale: [1, 3, 1],
60
- * rotation: [0, 0, 0],
61
- * material: new PhongMaterial(viewer.scene, {
62
- * diffuse: [1, 0.3, 0.3]
63
- * })
64
- * }),
65
- *
66
- * new Mesh(viewer.scene, { // Green table leg
67
- * id: "greenLeg",
68
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
69
- * position: [4, -6, -4],
70
- * scale: [1, 3, 1],
71
- * rotation: [0, 0, 0],
72
- * material: new PhongMaterial(viewer.scene, {
73
- * diffuse: [0.3, 1.0, 0.3]
74
- * })
75
- * }),
76
- *
77
- * new Mesh(viewer.scene, {// Blue table leg
78
- * id: "blueLeg",
79
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
80
- * position: [4, -6, 4],
81
- * scale: [1, 3, 1],
82
- * rotation: [0, 0, 0],
83
- * material: new PhongMaterial(viewer.scene, {
84
- * diffuse: [0.3, 0.3, 1.0]
85
- * })
86
- * }),
87
- *
88
- * new Mesh(viewer.scene, { // Yellow table leg
89
- * id: "yellowLeg",
90
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
91
- * position: [-4, -6, 4],
92
- * scale: [1, 3, 1],
93
- * rotation: [0, 0, 0],
94
- * material: new PhongMaterial(viewer.scene, {
95
- * diffuse: [1.0, 1.0, 0.0]
96
- * })
97
- * }),
98
- *
99
- * new Mesh(viewer.scene, { // Purple table top
100
- * id: "tableTop",
101
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
102
- * position: [0, -3, 0],
103
- * scale: [6, 0.5, 6],
104
- * rotation: [0, 0, 0],
105
- * material: new PhongMaterial(viewer.scene, {
106
- * diffuse: [1.0, 0.3, 1.0]
107
- * })
108
- * })
109
- * ]
110
- * });
111
- *
112
- * // Find Nodes and Meshes by their IDs
113
- *
114
- * var table = viewer.scene.models["table"]; // Since table Node has isModel == true
115
- *
116
- * var redLeg = viewer.scene.objects["redLeg"]; // Since the Meshes have isObject == true
117
- * var greenLeg = viewer.scene.objects["greenLeg"];
118
- * var blueLeg = viewer.scene.objects["blueLeg"];
119
- *
120
- * // Highlight one of the table leg Meshes
121
- *
122
- * viewer.scene.setObjectsHighlighted(["redLeg"], true); // Since the Meshes have isObject == true
123
- *
124
- * // Periodically update transforms on our Nodes and Meshes
125
- *
126
- * viewer.scene.on("tick", function () {
127
- *
128
- * // Rotate legs
129
- * redLeg.rotateY(0.5);
130
- * greenLeg.rotateY(0.5);
131
- * blueLeg.rotateY(0.5);
132
- *
133
- * // Rotate table
134
- * table.rotateY(0.5);
135
- * table.rotateX(0.3);
136
- * });
137
- * ````
138
- *
139
- * ## Metadata
140
- *
141
- * As mentioned, we can also associate {@link MetaModel}s and {@link MetaObject}s with our Nodes and {@link Mesh}es,
142
- * within a {@link MetaScene}. See {@link MetaScene} for an example.
143
- *
144
- * @implements {Entity}
145
- */
146
- class Node extends Component {
147
-
148
- /**
149
- * @constructor
150
- * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.
151
- * @param {*} [cfg] Configs
152
- * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.
153
- * @param {Boolean} [cfg.isModel] Specify ````true```` if this Mesh represents a model, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.
154
- * @param {Boolean} [cfg.isObject] Specify ````true```` if this Mesh represents an object, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and may also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.
155
- * @param {Node} [cfg.parent] The parent Node.
156
- * @param {Number[]} [cfg.origin] World-space origin for this Node.
157
- * @param {Number[]} [cfg.rtcCenter] Deprecated - renamed to ````origin````.
158
- * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position.
159
- * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.
160
- * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
161
- * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.
162
- * @param {Number[]} [cfg.offset=[0,0,0]] World-space 3D translation offset. Translates the Node in World space, after modelling transforms.
163
- * @param {Boolean} [cfg.visible=true] Indicates if the Node is initially visible.
164
- * @param {Boolean} [cfg.culled=false] Indicates if the Node is initially culled from view.
165
- * @param {Boolean} [cfg.pickable=true] Indicates if the Node is initially pickable.
166
- * @param {Boolean} [cfg.clippable=true] Indicates if the Node is initially clippable.
167
- * @param {Boolean} [cfg.collidable=true] Indicates if the Node is initially included in boundary calculations.
168
- * @param {Boolean} [cfg.castsShadow=true] Indicates if the Node initially casts shadows.
169
- * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Node initially receives shadows.
170
- * @param {Boolean} [cfg.xrayed=false] Indicates if the Node is initially xrayed.
171
- * @param {Boolean} [cfg.highlighted=false] Indicates if the Node is initially highlighted.
172
- * @param {Boolean} [cfg.selected=false] Indicates if the Mesh is initially selected.
173
- * @param {Boolean} [cfg.edges=false] Indicates if the Node's edges are initially emphasized.
174
- * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] Node's initial RGB colorize color, multiplies by the rendered fragment colors.
175
- * @param {Number} [cfg.opacity=1.0] Node's initial opacity factor, multiplies by the rendered fragment alpha.
176
- * @param {Array} [cfg.children] Child Nodes or {@link Mesh}es to add initially. Children must be in the same {@link Scene} and will be removed first from whatever parents they may already have.
177
- * @param {Boolean} [cfg.inheritStates=true] Indicates if children given to this constructor should inherit rendering state from this parent as they are added. Rendering state includes {@link Node#visible}, {@link Node#culled}, {@link Node#pickable}, {@link Node#clippable}, {@link Node#castsShadow}, {@link Node#receivesShadow}, {@link Node#selected}, {@link Node#highlighted}, {@link Node#colorize} and {@link Node#opacity}.
178
- */
179
- constructor(owner, cfg = {}) {
180
-
181
- super(owner, cfg);
182
-
183
- this._parentNode = null;
184
- this._children = [];
185
-
186
- this._aabb = null;
187
- this._aabbDirty = true;
188
-
189
- this.scene._aabbDirty = true;
190
-
191
- this._numTriangles = 0;
192
-
193
- this._scale = math.vec3();
194
- this._quaternion = math.identityQuaternion();
195
- this._rotation = math.vec3();
196
- this._position = math.vec3();
197
- this._offset = math.vec3();
198
-
199
- this._localMatrix = math.identityMat4();
200
- this._worldMatrix = math.identityMat4();
201
-
202
- this._localMatrixDirty = true;
203
- this._worldMatrixDirty = true;
204
-
205
- if (cfg.matrix) {
206
- this.matrix = cfg.matrix;
207
- } else {
208
- this.scale = cfg.scale;
209
- this.position = cfg.position;
210
- if (cfg.quaternion) {
211
- } else {
212
- this.rotation = cfg.rotation;
213
- }
214
- }
215
-
216
- this._isModel = cfg.isModel;
217
- if (this._isModel) {
218
- this.scene._registerModel(this);
219
- }
220
-
221
- this._isObject = cfg.isObject;
222
- if (this._isObject) {
223
- this.scene._registerObject(this);
224
- }
225
-
226
- this.origin = cfg.origin;
227
- this.visible = cfg.visible;
228
- this.culled = cfg.culled;
229
- this.pickable = cfg.pickable;
230
- this.clippable = cfg.clippable;
231
- this.collidable = cfg.collidable;
232
- this.castsShadow = cfg.castsShadow;
233
- this.receivesShadow = cfg.receivesShadow;
234
- this.xrayed = cfg.xrayed;
235
- this.highlighted = cfg.highlighted;
236
- this.selected = cfg.selected;
237
- this.edges = cfg.edges;
238
- this.colorize = cfg.colorize;
239
- this.opacity = cfg.opacity;
240
- this.offset = cfg.offset;
241
-
242
- // Add children, which inherit state from this Node
243
-
244
- if (cfg.children) {
245
- const children = cfg.children;
246
- for (let i = 0, len = children.length; i < len; i++) {
247
- this.addChild(children[i], cfg.inheritStates);
248
- }
249
- }
250
-
251
- if (cfg.parentId) {
252
- const parentNode = this.scene.components[cfg.parentId];
253
- if (!parentNode) {
254
- this.error("Parent not found: '" + cfg.parentId + "'");
255
- } else if (!parentNode.isNode) {
256
- this.error("Parent is not a Node: '" + cfg.parentId + "'");
257
- } else {
258
- parentNode.addChild(this);
259
- }
260
- } else if (cfg.parent) {
261
- if (!cfg.parent.isNode) {
262
- this.error("Parent is not a Node");
263
- }
264
- cfg.parent.addChild(this);
265
- }
266
- }
267
-
268
- //------------------------------------------------------------------------------------------------------------------
269
- // Entity members
270
- //------------------------------------------------------------------------------------------------------------------
271
-
272
- /**
273
- * Returns true to indicate that this Component is an Entity.
274
- * @type {Boolean}
275
- */
276
- get isEntity() {
277
- return true;
278
- }
279
-
280
- /**
281
- * Returns ````true```` if this Mesh represents a model.
282
- *
283
- * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and
284
- * may also have a corresponding {@link MetaModel}.
285
- *
286
- * @type {Boolean}
287
- */
288
- get isModel() {
289
- return this._isModel;
290
- }
291
-
292
- /**
293
- * Returns ````true```` if this Node represents an object.
294
- *
295
- * When ````true```` the Node will be registered by {@link Node#id} in
296
- * {@link Scene#objects} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.
297
- *
298
- * @type {Boolean}
299
- * @abstract
300
- */
301
- get isObject() {
302
- return this._isObject;
303
- }
304
-
305
- /**
306
- * Gets the Node's World-space 3D axis-aligned bounding box.
307
- *
308
- * Represented by a six-element Float64Array containing the min/max extents of the
309
- * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.
310
- *
311
- * @type {Number[]}
312
- */
313
- get aabb() {
314
- if (this._aabbDirty) {
315
- this._updateAABB();
316
- }
317
- return this._aabb;
318
- }
319
-
320
- /**
321
- * Sets the World-space origin for this Node.
322
- *
323
- * @type {Float64Array}
324
- */
325
- set origin(origin) {
326
- if (origin) {
327
- if (!this._origin) {
328
- this._origin = math.vec3();
329
- }
330
- this._origin.set(origin);
331
- } else {
332
- if (this._origin) {
333
- this._origin = null;
334
- }
335
- }
336
- for (let i = 0, len = this._children.length; i < len; i++) {
337
- this._children[i].origin = origin;
338
- }
339
- this.glRedraw();
340
- }
341
-
342
- /**
343
- * Gets the World-space origin for this Node.
344
- *
345
- * @type {Float64Array}
346
- */
347
- get origin() {
348
- return this._origin;
349
- }
350
-
351
- /**
352
- * Sets the World-space origin for this Node.
353
- *
354
- * Deprecated and replaced by {@link Node#origin}.
355
- *
356
- * @deprecated
357
- * @type {Float64Array}
358
- */
359
- set rtcCenter(rtcCenter) {
360
- this.origin = rtcCenter;
361
- }
362
-
363
- /**
364
- * Gets the World-space origin for this Node.
365
- *
366
- * Deprecated and replaced by {@link Node#origin}.
367
- *
368
- * @deprecated
369
- * @type {Float64Array}
370
- */
371
- get rtcCenter() {
372
- return this.origin;
373
- }
374
-
375
- /**
376
- * The number of triangles in this Node.
377
- *
378
- * @type {Number}
379
- */
380
- get numTriangles() {
381
- return this._numTriangles;
382
- }
383
-
384
- /**
385
- * Sets if this Node and all child Nodes and {@link Mesh}es are visible.
386
- *
387
- * Only rendered both {@link Node#visible} is ````true```` and {@link Node#culled} is ````false````.
388
- *
389
- * When {@link Node#isObject} and {@link Node#visible} are both ````true```` the Node will be
390
- * registered by {@link Node#id} in {@link Scene#visibleObjects}.
391
- *
392
- * @type {Boolean}
393
- */
394
- set visible(visible) {
395
- visible = visible !== false;
396
- this._visible = visible;
397
- for (let i = 0, len = this._children.length; i < len; i++) {
398
- this._children[i].visible = visible;
399
- }
400
- if (this._isObject) {
401
- this.scene._objectVisibilityUpdated(this, visible);
402
- }
403
- }
404
-
405
- /**
406
- * Gets if this Node is visible.
407
- *
408
- * Child Nodes and {@link Mesh}es may have different values for this property.
409
- *
410
- * When {@link Node#isObject} and {@link Node#visible} are both ````true```` the Node will be
411
- * registered by {@link Node#id} in {@link Scene#visibleObjects}.
412
- *
413
- * @type {Boolean}
414
- */
415
- get visible() {
416
- return this._visible;
417
- }
418
-
419
- /**
420
- * Sets if this Node and all child Nodes and {@link Mesh}es are xrayed.
421
- *
422
- * When {@link Node#isObject} and {@link Node#xrayed} are both ````true```` the Node will be
423
- * registered by {@link Node#id} in {@link Scene#xrayedObjects}.
424
- *
425
- * @type {Boolean}
426
- */
427
- set xrayed(xrayed) {
428
- xrayed = !!xrayed;
429
- this._xrayed = xrayed;
430
- for (let i = 0, len = this._children.length; i < len; i++) {
431
- this._children[i].xrayed = xrayed;
432
- }
433
- if (this._isObject) {
434
- this.scene._objectXRayedUpdated(this, xrayed);
435
- }
436
- }
437
-
438
- /**
439
- * Gets if this Node is xrayed.
440
- *
441
- * When {@link Node#isObject} and {@link Node#xrayed} are both ````true```` the Node will be
442
- * registered by {@link Node#id} in {@link Scene#xrayedObjects}.
443
- *
444
- * Child Nodes and {@link Mesh}es may have different values for this property.
445
- *
446
- * @type {Boolean}
447
- */
448
- get xrayed() {
449
- return this._xrayed;
450
- }
451
-
452
- /**
453
- * Sets if this Node and all child Nodes and {@link Mesh}es are highlighted.
454
- *
455
- * When {@link Node#isObject} and {@link Node#highlighted} are both ````true```` the Node will be
456
- * registered by {@link Node#id} in {@link Scene#highlightedObjects}.
457
- *
458
- * @type {Boolean}
459
- */
460
- set highlighted(highlighted) {
461
- highlighted = !!highlighted;
462
- this._highlighted = highlighted;
463
- for (let i = 0, len = this._children.length; i < len; i++) {
464
- this._children[i].highlighted = highlighted;
465
- }
466
- if (this._isObject) {
467
- this.scene._objectHighlightedUpdated(this, highlighted);
468
- }
469
- }
470
-
471
- /**
472
- * Gets if this Node is highlighted.
473
- *
474
- * When {@link Node#isObject} and {@link Node#highlighted} are both ````true```` the Node will be
475
- * registered by {@link Node#id} in {@link Scene#highlightedObjects}.
476
- *
477
- * Child Nodes and {@link Mesh}es may have different values for this property.
478
- *
479
- * @type {Boolean}
480
- */
481
- get highlighted() {
482
- return this._highlighted;
483
- }
484
-
485
- /**
486
- * Sets if this Node and all child Nodes and {@link Mesh}es are selected.
487
- *
488
- * When {@link Node#isObject} and {@link Node#selected} are both ````true```` the Node will be
489
- * registered by {@link Node#id} in {@link Scene#selectedObjects}.
490
- *
491
- * @type {Boolean}
492
- */
493
- set selected(selected) {
494
- selected = !!selected;
495
- this._selected = selected;
496
- for (let i = 0, len = this._children.length; i < len; i++) {
497
- this._children[i].selected = selected;
498
- }
499
- if (this._isObject) {
500
- this.scene._objectSelectedUpdated(this, selected);
501
- }
502
- }
503
-
504
- /**
505
- * Gets if this Node is selected.
506
- *
507
- * When {@link Node#isObject} and {@link Node#selected} are both ````true```` the Node will be
508
- * registered by {@link Node#id} in {@link Scene#selectedObjects}.
509
- *
510
- * Child Nodes and {@link Mesh}es may have different values for this property.
511
- *
512
- * @type {Boolean}
513
- */
514
- get selected() {
515
- return this._selected;
516
- }
517
-
518
- /**
519
- * Sets if this Node and all child Nodes and {@link Mesh}es are edge-enhanced.
520
- *
521
- * @type {Boolean}
522
- */
523
- set edges(edges) {
524
- edges = !!edges;
525
- this._edges = edges;
526
- for (let i = 0, len = this._children.length; i < len; i++) {
527
- this._children[i].edges = edges;
528
- }
529
- }
530
-
531
- /**
532
- * Gets if this Node's edges are enhanced.
533
- *
534
- * Child Nodes and {@link Mesh}es may have different values for this property.
535
- *
536
- * @type {Boolean}
537
- */
538
- get edges() {
539
- return this._edges;
540
- }
541
-
542
- /**
543
- * Sets if this Node and all child Nodes and {@link Mesh}es are culled.
544
- *
545
- * @type {Boolean}
546
- */
547
- set culled(culled) {
548
- culled = !!culled;
549
- this._culled = culled;
550
- for (let i = 0, len = this._children.length; i < len; i++) {
551
- this._children[i].culled = culled;
552
- }
553
- }
554
-
555
- /**
556
- * Gets if this Node is culled.
557
- *
558
- * @type {Boolean}
559
- */
560
- get culled() {
561
- return this._culled;
562
- }
563
-
564
- /**
565
- * Sets if this Node and all child Nodes and {@link Mesh}es are clippable.
566
- *
567
- * Clipping is done by the {@link SectionPlane}s in {@link Scene#clips}.
568
- *
569
- * @type {Boolean}
570
- */
571
- set clippable(clippable) {
572
- clippable = clippable !== false;
573
- this._clippable = clippable;
574
- for (let i = 0, len = this._children.length; i < len; i++) {
575
- this._children[i].clippable = clippable;
576
- }
577
- }
578
-
579
- /**
580
- * Gets if this Node is clippable.
581
- *
582
- * Clipping is done by the {@link SectionPlane}s in {@link Scene#clips}.
583
- *
584
- * Child Nodes and {@link Mesh}es may have different values for this property.
585
- *
586
- * @type {Boolean}
587
- */
588
- get clippable() {
589
- return this._clippable;
590
- }
591
-
592
- /**
593
- * Sets if this Node and all child Nodes and {@link Mesh}es are included in boundary calculations.
594
- *
595
- * @type {Boolean}
596
- */
597
- set collidable(collidable) {
598
- collidable = collidable !== false;
599
- this._collidable = collidable;
600
- for (let i = 0, len = this._children.length; i < len; i++) {
601
- this._children[i].collidable = collidable;
602
- }
603
- }
604
-
605
- /**
606
- * Gets if this Node is included in boundary calculations.
607
- *
608
- * Child Nodes and {@link Mesh}es may have different values for this property.
609
- *
610
- * @type {Boolean}
611
- */
612
- get collidable() {
613
- return this._collidable;
614
- }
615
-
616
- /**
617
- * Sets if this Node and all child Nodes and {@link Mesh}es are pickable.
618
- *
619
- * Picking is done via calls to {@link Scene#pick}.
620
- *
621
- * @type {Boolean}
622
- */
623
- set pickable(pickable) {
624
- pickable = pickable !== false;
625
- this._pickable = pickable;
626
- for (let i = 0, len = this._children.length; i < len; i++) {
627
- this._children[i].pickable = pickable;
628
- }
629
- }
630
-
631
- /**
632
- * Gets if to this Node is pickable.
633
- *
634
- * Picking is done via calls to {@link Scene#pick}.
635
- *
636
- * Child Nodes and {@link Mesh}es may have different values for this property.
637
- *
638
- * @type {Boolean}
639
- */
640
- get pickable() {
641
- return this._pickable;
642
- }
643
-
644
- /**
645
- * Sets the RGB colorize color for this Node and all child Nodes and {@link Mesh}es}.
646
- *
647
- * Multiplies by rendered fragment colors.
648
- *
649
- * Each element of the color is in range ````[0..1]````.
650
- *
651
- * @type {Number[]}
652
- */
653
- set colorize(rgb) {
654
- let colorize = this._colorize;
655
- if (!colorize) {
656
- colorize = this._colorize = new Float32Array(4);
657
- colorize[3] = 1.0;
658
- }
659
- if (rgb) {
660
- colorize[0] = rgb[0];
661
- colorize[1] = rgb[1];
662
- colorize[2] = rgb[2];
663
- } else {
664
- colorize[0] = 1;
665
- colorize[1] = 1;
666
- colorize[2] = 1;
667
- }
668
- for (let i = 0, len = this._children.length; i < len; i++) {
669
- this._children[i].colorize = colorize;
670
- }
671
- if (this._isObject) {
672
- const colorized = (!!rgb);
673
- this.scene._objectColorizeUpdated(this, colorized);
674
- }
675
- }
676
-
677
- /**
678
- * Gets the RGB colorize color for this Node.
679
- *
680
- * Each element of the color is in range ````[0..1]````.
681
- *
682
- * Child Nodes and {@link Mesh}es may have different values for this property.
683
- *
684
- * @type {Number[]}
685
- */
686
- get colorize() {
687
- return this._colorize.slice(0, 3);
688
- }
689
-
690
- /**
691
- * Sets the opacity factor for this Node and all child Nodes and {@link Mesh}es.
692
- *
693
- * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.
694
- *
695
- * @type {Number}
696
- */
697
- set opacity(opacity) {
698
- let colorize = this._colorize;
699
- if (!colorize) {
700
- colorize = this._colorize = new Float32Array(4);
701
- colorize[0] = 1;
702
- colorize[1] = 1;
703
- colorize[2] = 1;
704
- }
705
- colorize[3] = opacity !== null && opacity !== undefined ? opacity : 1.0;
706
- for (let i = 0, len = this._children.length; i < len; i++) {
707
- this._children[i].opacity = opacity;
708
- }
709
- if (this._isObject) {
710
- const opacityUpdated = (opacity !== null && opacity !== undefined);
711
- this.scene._objectOpacityUpdated(this, opacityUpdated);
712
- }
713
- }
714
-
715
- /**
716
- * Gets this Node's opacity factor.
717
- *
718
- * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.
719
- *
720
- * Child Nodes and {@link Mesh}es may have different values for this property.
721
- *
722
- * @type {Number}
723
- */
724
- get opacity() {
725
- return this._colorize[3];
726
- }
727
-
728
- /**
729
- * Sets if this Node and all child Nodes and {@link Mesh}es cast shadows.
730
- *
731
- * @type {Boolean}
732
- */
733
- set castsShadow(castsShadow) {
734
- castsShadow = !!castsShadow;
735
- this._castsShadow = castsShadow;
736
- for (let i = 0, len = this._children.length; i < len; i++) {
737
- this._children[i].castsShadow = castsShadow;
738
- }
739
- }
740
-
741
- /**
742
- * Gets if this Node casts shadows.
743
- *
744
- * Child Nodes and {@link Mesh}es may have different values for this property.
745
- *
746
- * @type {Boolean}
747
- */
748
- get castsShadow() {
749
- return this._castsShadow;
750
- }
751
-
752
- /**
753
- * Sets if this Node and all child Nodes and {@link Mesh}es can have shadows cast upon them.
754
- *
755
- * @type {Boolean}
756
- */
757
- set receivesShadow(receivesShadow) {
758
- receivesShadow = !!receivesShadow;
759
- this._receivesShadow = receivesShadow;
760
- for (let i = 0, len = this._children.length; i < len; i++) {
761
- this._children[i].receivesShadow = receivesShadow;
762
- }
763
- }
764
-
765
- /**
766
- * Whether or not to this Node can have shadows cast upon it.
767
- *
768
- * Child Nodes and {@link Mesh}es may have different values for this property.
769
- *
770
- * @type {Boolean}
771
- */
772
- get receivesShadow() {
773
- return this._receivesShadow;
774
- }
775
-
776
- /**
777
- * Gets if this Node can have Scalable Ambient Obscurance (SAO) applied to it.
778
- *
779
- * SAO is configured by {@link SAO}.
780
- *
781
- * @type {Boolean}
782
- * @abstract
783
- */
784
- get saoEnabled() {
785
- return false; // TODO: Support SAO on Nodes
786
- }
787
-
788
-
789
- /**
790
- * Sets the 3D World-space offset for this Node and all child Nodes and {@link Mesh}es}.
791
- *
792
- * The offset dynamically translates those components in World-space.
793
- *
794
- * Default value is ````[0, 0, 0]````.
795
- *
796
- * Note that child Nodes and {@link Mesh}es may subsequently be given different values for this property.
797
- *
798
- * @type {Number[]}
799
- */
800
- set offset(offset) {
801
- if (offset) {
802
- this._offset[0] = offset[0];
803
- this._offset[1] = offset[1];
804
- this._offset[2] = offset[2];
805
- } else {
806
- this._offset[0] = 0;
807
- this._offset[1] = 0;
808
- this._offset[2] = 0;
809
- }
810
- for (let i = 0, len = this._children.length; i < len; i++) {
811
- this._children[i].offset = this._offset;
812
- }
813
- if (this._isObject) {
814
- this.scene._objectOffsetUpdated(this, offset);
815
- }
816
- }
817
-
818
- /**
819
- * Gets the Node's 3D World-space offset.
820
- *
821
- * Default value is ````[0, 0, 0]````.
822
- *
823
- * Child Nodes and {@link Mesh}es may have different values for this property.
824
- *
825
- * @type {Number[]}
826
- */
827
- get offset() {
828
- return this._offset;
829
- }
830
-
831
-
832
- //------------------------------------------------------------------------------------------------------------------
833
- // Node members
834
- //------------------------------------------------------------------------------------------------------------------
835
-
836
- /**
837
- * Returns true to indicate that this Component is a Node.
838
- * @type {Boolean}
839
- */
840
- get isNode() {
841
- return true;
842
- }
843
-
844
- _setLocalMatrixDirty() {
845
- this._localMatrixDirty = true;
846
- this._setWorldMatrixDirty();
847
- }
848
-
849
- _setWorldMatrixDirty() {
850
- this._worldMatrixDirty = true;
851
- for (let i = 0, len = this._children.length; i < len; i++) {
852
- this._children[i]._setWorldMatrixDirty();
853
- }
854
- }
855
-
856
- _buildWorldMatrix() {
857
- const localMatrix = this.matrix;
858
- if (!this._parentNode) {
859
- for (let i = 0, len = localMatrix.length; i < len; i++) {
860
- this._worldMatrix[i] = localMatrix[i];
861
- }
862
- } else {
863
- math.mulMat4(this._parentNode.worldMatrix, localMatrix, this._worldMatrix);
864
- }
865
- this._worldMatrixDirty = false;
866
- }
867
-
868
- _setSubtreeAABBsDirty(node) {
869
- node._aabbDirty = true;
870
- if (node._children) {
871
- for (let i = 0, len = node._children.length; i < len; i++) {
872
- this._setSubtreeAABBsDirty(node._children[i]);
873
- }
874
- }
875
- }
876
-
877
- _setAABBDirty() {
878
- this._setSubtreeAABBsDirty(this);
879
- if (this.collidable) {
880
- for (let node = this; node; node = node._parentNode) {
881
- node._aabbDirty = true;
882
- }
883
- }
884
- }
885
-
886
- _updateAABB() {
887
- this.scene._aabbDirty = true;
888
- if (!this._aabb) {
889
- this._aabb = math.AABB3();
890
- }
891
- if (this._buildAABB) {
892
- this._buildAABB(this.worldMatrix, this._aabb); // Mesh or VBOSceneModel
893
- } else { // Node | Node | Model
894
- math.collapseAABB3(this._aabb);
895
- let node;
896
- for (let i = 0, len = this._children.length; i < len; i++) {
897
- node = this._children[i];
898
- if (!node.collidable) {
899
- continue;
900
- }
901
- math.expandAABB3(this._aabb, node.aabb);
902
- }
903
- }
904
- this._aabbDirty = false;
905
- }
906
-
907
- /**
908
- * Adds a child Node or {@link Mesh}.
909
- *
910
- * The child must be a Node or {@link Mesh} in the same {@link Scene}.
911
- *
912
- * If the child already has a parent, will be removed from that parent first.
913
- *
914
- * Does nothing if already a child.
915
- *
916
- * @param {Node|Mesh|String} child Instance or ID of the child to add.
917
- * @param [inheritStates=false] Indicates if the child should inherit rendering states from this parent as it is added. Rendering state includes {@link Node#visible}, {@link Node#culled}, {@link Node#pickable}, {@link Node#clippable}, {@link Node#castsShadow}, {@link Node#receivesShadow}, {@link Node#selected}, {@link Node#highlighted}, {@link Node#colorize} and {@link Node#opacity}.
918
- * @returns {Node|Mesh} The child.
919
- */
920
- addChild(child, inheritStates) {
921
- if (utils.isNumeric(child) || utils.isString(child)) {
922
- const nodeId = child;
923
- child = this.scene.component[nodeId];
924
- if (!child) {
925
- this.warn("Component not found: " + utils.inQuotes(nodeId));
926
- return;
927
- }
928
- if (!child.isNode && !child.isMesh) {
929
- this.error("Not a Node or Mesh: " + nodeId);
930
- return;
931
- }
932
- } else {
933
- if (!child.isNode && !child.isMesh) {
934
- this.error("Not a Node or Mesh: " + child.id);
935
- return;
936
- }
937
- if (child._parentNode) {
938
- if (child._parentNode.id === this.id) {
939
- this.warn("Already a child: " + child.id);
940
- return;
941
- }
942
- child._parentNode.removeChild(child);
943
- }
944
- }
945
- const id = child.id;
946
- if (child.scene.id !== this.scene.id) {
947
- this.error("Child not in same Scene: " + child.id);
948
- return;
949
- }
950
- this._children.push(child);
951
- child._parentNode = this;
952
- if (!!inheritStates) {
953
- child.visible = this.visible;
954
- child.culled = this.culled;
955
- child.xrayed = this.xrayed;
956
- child.highlited = this.highlighted;
957
- child.selected = this.selected;
958
- child.edges = this.edges;
959
- child.clippable = this.clippable;
960
- child.pickable = this.pickable;
961
- child.collidable = this.collidable;
962
- child.castsShadow = this.castsShadow;
963
- child.receivesShadow = this.receivesShadow;
964
- child.colorize = this.colorize;
965
- child.opacity = this.opacity;
966
- child.offset = this.offset;
967
- }
968
- child._setWorldMatrixDirty();
969
- child._setAABBDirty();
970
- this._numTriangles += child.numTriangles;
971
- return child;
972
- }
973
-
974
- /**
975
- * Removes the given child Node or {@link Mesh}.
976
- *
977
- * @param {Node|Mesh} child Child to remove.
978
- */
979
- removeChild(child) {
980
- for (let i = 0, len = this._children.length; i < len; i++) {
981
- if (this._children[i].id === child.id) {
982
- child._parentNode = null;
983
- this._children = this._children.splice(i, 1);
984
- child._setWorldMatrixDirty();
985
- child._setAABBDirty();
986
- this._setAABBDirty();
987
- this._numTriangles -= child.numTriangles;
988
- return;
989
- }
990
- }
991
- }
992
-
993
- /**
994
- * Removes all child Nodes and {@link Mesh}es.
995
- */
996
- removeChildren() {
997
- let child;
998
- for (let i = 0, len = this._children.length; i < len; i++) {
999
- child = this._children[i];
1000
- child._parentNode = null;
1001
- child._setWorldMatrixDirty();
1002
- child._setAABBDirty();
1003
- this._numTriangles -= child.numTriangles;
1004
- }
1005
- this._children = [];
1006
- this._setAABBDirty();
1007
- }
1008
-
1009
- /**
1010
- * Number of child Nodes or {@link Mesh}es.
1011
- *
1012
- * @type {Number}
1013
- */
1014
- get numChildren() {
1015
- return this._children.length;
1016
- }
1017
-
1018
- /**
1019
- * Array of child Nodes or {@link Mesh}es.
1020
- *
1021
- * @type {Array}
1022
- */
1023
- get children() {
1024
- return this._children;
1025
- }
1026
-
1027
- /**
1028
- * The parent Node.
1029
- *
1030
- * The parent Node may also be set by passing the Node to the parent's {@link Node#addChild} method.
1031
- *
1032
- * @type {Node}
1033
- */
1034
- set parent(node) {
1035
- if (utils.isNumeric(node) || utils.isString(node)) {
1036
- const nodeId = node;
1037
- node = this.scene.components[nodeId];
1038
- if (!node) {
1039
- this.warn("Node not found: " + utils.inQuotes(nodeId));
1040
- return;
1041
- }
1042
- if (!node.isNode) {
1043
- this.error("Not a Node: " + node.id);
1044
- return;
1045
- }
1046
- }
1047
- if (node.scene.id !== this.scene.id) {
1048
- this.error("Node not in same Scene: " + node.id);
1049
- return;
1050
- }
1051
- if (this._parentNode && this._parentNode.id === node.id) {
1052
- this.warn("Already a child of Node: " + node.id);
1053
- return;
1054
- }
1055
- node.addChild(this);
1056
- }
1057
-
1058
- /**
1059
- * The parent Node.
1060
- *
1061
- * @type {Node}
1062
- */
1063
- get parent() {
1064
- return this._parentNode;
1065
- }
1066
-
1067
- /**
1068
- * Sets the Node's local translation.
1069
- *
1070
- * Default value is ````[0,0,0]````.
1071
- *
1072
- * @type {Number[]}
1073
- */
1074
- set position(value) {
1075
- this._position.set(value || [0, 0, 0]);
1076
- this._setLocalMatrixDirty();
1077
- this._setAABBDirty();
1078
- this.glRedraw();
1079
- }
1080
-
1081
- /**
1082
- * Gets the Node's local translation.
1083
- *
1084
- * Default value is ````[0,0,0]````.
1085
- *
1086
- * @type {Number[]}
1087
- */
1088
- get position() {
1089
- return this._position;
1090
- }
1091
-
1092
- /**
1093
- * Sets the Node's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
1094
- *
1095
- * Default value is ````[0,0,0]````.
1096
- *
1097
- * @type {Number[]}
1098
- */
1099
- set rotation(value) {
1100
- this._rotation.set(value || [0, 0, 0]);
1101
- math.eulerToQuaternion(this._rotation, "XYZ", this._quaternion);
1102
- this._setLocalMatrixDirty();
1103
- this._setAABBDirty();
1104
- this.glRedraw();
1105
- }
1106
-
1107
- /**
1108
- * Gets the Node's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
1109
- *
1110
- * Default value is ````[0,0,0]````.
1111
- *
1112
- * @type {Number[]}
1113
- */
1114
- get rotation() {
1115
- return this._rotation;
1116
- }
1117
-
1118
- /**
1119
- * Sets the Node's local rotation quaternion.
1120
- *
1121
- * Default value is ````[0,0,0,1]````.
1122
- *
1123
- * @type {Number[]}
1124
- */
1125
- set quaternion(value) {
1126
- this._quaternion.set(value || [0, 0, 0, 1]);
1127
- math.quaternionToEuler(this._quaternion, "XYZ", this._rotation);
1128
- this._setLocalMatrixDirty();
1129
- this._setAABBDirty();
1130
- this.glRedraw();
1131
- }
1132
-
1133
- /**
1134
- * Gets the Node's local rotation quaternion.
1135
- *
1136
- * Default value is ````[0,0,0,1]````.
1137
- *
1138
- * @type {Number[]}
1139
- */
1140
- get quaternion() {
1141
- return this._quaternion;
1142
- }
1143
-
1144
- /**
1145
- * Sets the Node's local scale.
1146
- *
1147
- * Default value is ````[1,1,1]````.
1148
- *
1149
- * @type {Number[]}
1150
- */
1151
- set scale(value) {
1152
- this._scale.set(value || [1, 1, 1]);
1153
- this._setLocalMatrixDirty();
1154
- this._setAABBDirty();
1155
- this.glRedraw();
1156
- }
1157
-
1158
- /**
1159
- * Gets the Node's local scale.
1160
- *
1161
- * Default value is ````[1,1,1]````.
1162
- *
1163
- * @type {Number[]}
1164
- */
1165
- get scale() {
1166
- return this._scale;
1167
- }
1168
-
1169
- /**
1170
- * Sets the Node's local modeling transform matrix.
1171
- *
1172
- * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.
1173
- *
1174
- * @type {Number[]}
1175
- */
1176
- set matrix(value) {
1177
- if (!this._localMatrix) {
1178
- this._localMatrix = math.identityMat4();
1179
- }
1180
- this._localMatrix.set(value || identityMat);
1181
- math.decomposeMat4(this._localMatrix, this._position, this._quaternion, this._scale);
1182
- this._localMatrixDirty = false;
1183
- this._setWorldMatrixDirty();
1184
- this._setAABBDirty();
1185
- this.glRedraw();
1186
- }
1187
-
1188
- /**
1189
- * Gets the Node's local modeling transform matrix.
1190
- *
1191
- * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.
1192
- *
1193
- * @type {Number[]}
1194
- */
1195
- get matrix() {
1196
- if (this._localMatrixDirty) {
1197
- if (!this._localMatrix) {
1198
- this._localMatrix = math.identityMat4();
1199
- }
1200
- math.composeMat4(this._position, this._quaternion, this._scale, this._localMatrix);
1201
- this._localMatrixDirty = false;
1202
- }
1203
- return this._localMatrix;
1204
- }
1205
-
1206
- /**
1207
- * Gets the Node's World matrix.
1208
- *
1209
- * @property worldMatrix
1210
- * @type {Number[]}
1211
- */
1212
- get worldMatrix() {
1213
- if (this._worldMatrixDirty) {
1214
- this._buildWorldMatrix();
1215
- }
1216
- return this._worldMatrix;
1217
- }
1218
-
1219
- /**
1220
- * Rotates the Node about the given local axis by the given increment.
1221
- *
1222
- * @param {Number[]} axis Local axis about which to rotate.
1223
- * @param {Number} angle Angle increment in degrees.
1224
- */
1225
- rotate(axis, angle) {
1226
- angleAxis[0] = axis[0];
1227
- angleAxis[1] = axis[1];
1228
- angleAxis[2] = axis[2];
1229
- angleAxis[3] = angle * math.DEGTORAD;
1230
- math.angleAxisToQuaternion(angleAxis, q1);
1231
- math.mulQuaternions(this.quaternion, q1, q2);
1232
- this.quaternion = q2;
1233
- this._setLocalMatrixDirty();
1234
- this._setAABBDirty();
1235
- this.glRedraw();
1236
- return this;
1237
- }
1238
-
1239
- /**
1240
- * Rotates the Node about the given World-space axis by the given increment.
1241
- *
1242
- * @param {Number[]} axis Local axis about which to rotate.
1243
- * @param {Number} angle Angle increment in degrees.
1244
- */
1245
- rotateOnWorldAxis(axis, angle) {
1246
- angleAxis[0] = axis[0];
1247
- angleAxis[1] = axis[1];
1248
- angleAxis[2] = axis[2];
1249
- angleAxis[3] = angle * math.DEGTORAD;
1250
- math.angleAxisToQuaternion(angleAxis, q1);
1251
- math.mulQuaternions(q1, this.quaternion, q1);
1252
- //this.quaternion.premultiply(q1);
1253
- return this;
1254
- }
1255
-
1256
- /**
1257
- * Rotates the Node about the local X-axis by the given increment.
1258
- *
1259
- * @param {Number} angle Angle increment in degrees.
1260
- */
1261
- rotateX(angle) {
1262
- return this.rotate(xAxis, angle);
1263
- }
1264
-
1265
- /**
1266
- * Rotates the Node about the local Y-axis by the given increment.
1267
- *
1268
- * @param {Number} angle Angle increment in degrees.
1269
- */
1270
- rotateY(angle) {
1271
- return this.rotate(yAxis, angle);
1272
- }
1273
-
1274
- /**
1275
- * Rotates the Node about the local Z-axis by the given increment.
1276
- *
1277
- * @param {Number} angle Angle increment in degrees.
1278
- */
1279
- rotateZ(angle) {
1280
- return this.rotate(zAxis, angle);
1281
- }
1282
-
1283
- /**
1284
- * Translates the Node along local space vector by the given increment.
1285
- *
1286
- * @param {Number[]} axis Normalized local space 3D vector along which to translate.
1287
- * @param {Number} distance Distance to translate along the vector.
1288
- */
1289
- translate(axis, distance) {
1290
- math.vec3ApplyQuaternion(this.quaternion, axis, veca);
1291
- math.mulVec3Scalar(veca, distance, vecb);
1292
- math.addVec3(this.position, vecb, this.position);
1293
- this._setLocalMatrixDirty();
1294
- this._setAABBDirty();
1295
- this.glRedraw();
1296
- return this;
1297
- }
1298
-
1299
- /**
1300
- * Translates the Node along the local X-axis by the given increment.
1301
- *
1302
- * @param {Number} distance Distance to translate along the X-axis.
1303
- */
1304
- translateX(distance) {
1305
- return this.translate(xAxis, distance);
1306
- }
1307
-
1308
- /**
1309
- * Translates the Node along the local Y-axis by the given increment.
1310
- *
1311
- * @param {Number} distance Distance to translate along the Y-axis.
1312
- */
1313
- translateY(distance) {
1314
- return this.translate(yAxis, distance);
1315
- }
1316
-
1317
- /**
1318
- * Translates the Node along the local Z-axis by the given increment.
1319
- *
1320
- * @param {Number} distance Distance to translate along the Z-axis.
1321
- */
1322
- translateZ(distance) {
1323
- return this.translate(zAxis, distance);
1324
- }
1325
-
1326
- //------------------------------------------------------------------------------------------------------------------
1327
- // Component members
1328
- //------------------------------------------------------------------------------------------------------------------
1329
-
1330
- /**
1331
- @private
1332
- */
1333
- get type() {
1334
- return "Node";
1335
- }
1336
-
1337
- /**
1338
- * Destroys this Node.
1339
- */
1340
- destroy() {
1341
- super.destroy();
1342
- if (this._parentNode) {
1343
- this._parentNode.removeChild(this);
1344
- }
1345
- if (this._isObject) {
1346
- this.scene._deregisterObject(this);
1347
- if (this._visible) {
1348
- this.scene._objectVisibilityUpdated(this, false, false);
1349
- }
1350
- if (this._xrayed) {
1351
- this.scene._objectXRayedUpdated(this, false, false);
1352
- }
1353
- if (this._selected) {
1354
- this.scene._objectSelectedUpdated(this, false, false);
1355
- }
1356
- if (this._highlighted) {
1357
- this.scene._objectHighlightedUpdated(this, false, false);
1358
- }
1359
- this.scene._objectColorizeUpdated(this, false);
1360
- this.scene._objectOpacityUpdated(this, false);
1361
- if (this.offset.some((v) => v !== 0))
1362
- this.scene._objectOffsetUpdated(this, false);
1363
- }
1364
- if (this._isModel) {
1365
- this.scene._deregisterModel(this);
1366
- }
1367
- if (this._children.length) {
1368
- // Clone the _children before iterating, so our children don't mess us up when calling removeChild().
1369
- const tempChildList = this._children.splice();
1370
- let child;
1371
- for (let i = 0, len = tempChildList.length; i < len; i++) {
1372
- child = tempChildList[i];
1373
- child.destroy();
1374
- }
1375
- }
1376
- this._children = [];
1377
- this._setAABBDirty();
1378
- this.scene._aabbDirty = true;
1379
- }
1380
-
1381
- }
1382
-
1383
- export {Node};