three-stdlib 2.15.0 → 2.15.2

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 (1222) hide show
  1. package/animation/AnimationClipCreator.js +32 -52
  2. package/animation/AnimationClipCreator.mjs +57 -0
  3. package/animation/CCDIKSolver.js +66 -161
  4. package/animation/CCDIKSolver.mjs +234 -0
  5. package/animation/MMDAnimationHelper.js +150 -341
  6. package/animation/MMDAnimationHelper.mjs +514 -0
  7. package/animation/MMDPhysics.js +154 -361
  8. package/animation/MMDPhysics.mjs +769 -0
  9. package/cameras/CinematicCamera.js +67 -77
  10. package/cameras/CinematicCamera.mjs +129 -0
  11. package/controls/ArcballControls.js +544 -1449
  12. package/controls/ArcballControls.mjs +1737 -0
  13. package/controls/DeviceOrientationControls.js +52 -97
  14. package/controls/DeviceOrientationControls.mjs +74 -0
  15. package/controls/DragControls.js +85 -187
  16. package/controls/DragControls.mjs +172 -0
  17. package/controls/FirstPersonControls.js +123 -193
  18. package/controls/FirstPersonControls.mjs +220 -0
  19. package/controls/FlyControls.js +82 -152
  20. package/controls/FlyControls.mjs +239 -0
  21. package/controls/OrbitControls.js +232 -481
  22. package/controls/OrbitControls.mjs +731 -0
  23. package/controls/PointerLockControls.js +63 -99
  24. package/controls/PointerLockControls.mjs +88 -0
  25. package/controls/TrackballControls.js +211 -383
  26. package/controls/TrackballControls.mjs +481 -0
  27. package/controls/TransformControls.js +575 -782
  28. package/controls/TransformControls.mjs +1068 -0
  29. package/controls/experimental/CameraControls.js +329 -609
  30. package/controls/experimental/CameraControls.mjs +673 -0
  31. package/csm/CSM.js +47 -108
  32. package/csm/CSM.mjs +244 -0
  33. package/csm/CSMFrustum.js +14 -29
  34. package/csm/CSMFrustum.mjs +75 -0
  35. package/csm/CSMHelper.js +20 -34
  36. package/csm/CSMHelper.mjs +114 -0
  37. package/csm/CSMShader.js +7 -11
  38. package/csm/CSMShader.mjs +251 -0
  39. package/curves/CurveExtras.js +73 -115
  40. package/curves/CurveExtras.mjs +224 -0
  41. package/curves/NURBSCurve.js +15 -43
  42. package/curves/NURBSCurve.mjs +35 -0
  43. package/curves/NURBSSurface.js +11 -27
  44. package/curves/NURBSSurface.mjs +28 -0
  45. package/curves/NURBSUtils.js +54 -203
  46. package/curves/NURBSUtils.mjs +226 -0
  47. package/deprecated/Geometry.js +191 -486
  48. package/deprecated/Geometry.mjs +966 -0
  49. package/effects/AnaglyphEffect.js +95 -60
  50. package/effects/AnaglyphEffect.mjs +120 -0
  51. package/effects/AsciiEffect.js +80 -110
  52. package/effects/AsciiEffect.mjs +173 -0
  53. package/effects/OutlineEffect.js +121 -204
  54. package/effects/OutlineEffect.mjs +295 -0
  55. package/effects/ParallaxBarrierEffect.js +39 -38
  56. package/effects/ParallaxBarrierEffect.mjs +64 -0
  57. package/effects/PeppersGhostEffect.js +19 -68
  58. package/effects/PeppersGhostEffect.mjs +85 -0
  59. package/effects/StereoEffect.js +12 -16
  60. package/effects/StereoEffect.mjs +32 -0
  61. package/environments/RoomEnvironment.js +52 -47
  62. package/environments/RoomEnvironment.mjs +78 -0
  63. package/exporters/ColladaExporter.js +115 -241
  64. package/exporters/ColladaExporter.mjs +299 -0
  65. package/exporters/DRACOExporter.js +67 -121
  66. package/exporters/DRACOExporter.mjs +132 -0
  67. package/exporters/GLTFExporter.js +463 -1014
  68. package/exporters/GLTFExporter.mjs +1381 -0
  69. package/exporters/MMDExporter.js +44 -102
  70. package/exporters/MMDExporter.mjs +102 -0
  71. package/exporters/OBJExporter.js +78 -140
  72. package/exporters/OBJExporter.mjs +166 -0
  73. package/exporters/PLYExporter.js +93 -154
  74. package/exporters/PLYExporter.mjs +278 -0
  75. package/exporters/STLExporter.js +30 -81
  76. package/exporters/STLExporter.mjs +129 -0
  77. package/exporters/USDZExporter.js +84 -144
  78. package/exporters/USDZExporter.mjs +328 -0
  79. package/geometries/BoxLineGeometry.js +7 -14
  80. package/geometries/BoxLineGeometry.mjs +45 -0
  81. package/geometries/ConvexGeometry.js +15 -24
  82. package/geometries/ConvexGeometry.mjs +29 -0
  83. package/geometries/DecalGeometry.js +108 -162
  84. package/geometries/DecalGeometry.mjs +184 -0
  85. package/geometries/LightningStrike.js +101 -294
  86. package/geometries/LightningStrike.mjs +547 -0
  87. package/geometries/ParametricGeometries.js +26 -76
  88. package/geometries/ParametricGeometries.mjs +129 -0
  89. package/geometries/ParametricGeometry.js +24 -48
  90. package/geometries/ParametricGeometry.mjs +63 -0
  91. package/geometries/RoundedBoxGeometry.js +33 -64
  92. package/geometries/RoundedBoxGeometry.mjs +91 -0
  93. package/geometries/TeapotGeometry.js +1434 -174
  94. package/geometries/TeapotGeometry.mjs +1557 -0
  95. package/geometries/TextGeometry.js +9 -17
  96. package/geometries/TextGeometry.mjs +23 -0
  97. package/helpers/LightProbeHelper.js +53 -21
  98. package/helpers/LightProbeHelper.mjs +72 -0
  99. package/helpers/PositionalAudioHelper.js +23 -30
  100. package/helpers/PositionalAudioHelper.mjs +68 -0
  101. package/helpers/RectAreaLightHelper.js +17 -33
  102. package/helpers/RectAreaLightHelper.mjs +44 -0
  103. package/helpers/VertexNormalsHelper.js +20 -41
  104. package/helpers/VertexNormalsHelper.mjs +54 -0
  105. package/helpers/VertexTangentsHelper.js +18 -36
  106. package/helpers/VertexTangentsHelper.mjs +45 -0
  107. package/index.d.ts +54 -0
  108. package/index.js +968 -333
  109. package/index.mjs +968 -0
  110. package/interactive/SelectionBox.js +31 -46
  111. package/interactive/SelectionBox.mjs +137 -0
  112. package/interactive/SelectionHelper.js +16 -21
  113. package/interactive/SelectionHelper.mjs +54 -0
  114. package/libs/MeshoptDecoder.js +147 -58
  115. package/libs/MeshoptDecoder.mjs +210 -0
  116. package/libs/MotionControllers.js +66 -208
  117. package/libs/MotionControllers.mjs +261 -0
  118. package/lights/LightProbeGenerator.js +40 -96
  119. package/lights/LightProbeGenerator.mjs +145 -0
  120. package/lights/RectAreaLightUniformsLib.js +32842 -9
  121. package/lights/RectAreaLightUniformsLib.mjs +32842 -0
  122. package/lines/Line2.js +9 -12
  123. package/lines/Line2.mjs +13 -0
  124. package/lines/LineGeometry.js +7 -19
  125. package/lines/LineGeometry.mjs +44 -0
  126. package/lines/LineMaterial.js +51 -89
  127. package/lines/LineMaterial.mjs +539 -0
  128. package/lines/LineSegments2.js +56 -165
  129. package/lines/LineSegments2.mjs +202 -0
  130. package/lines/LineSegmentsGeometry.js +29 -71
  131. package/lines/LineSegmentsGeometry.mjs +124 -0
  132. package/lines/Wireframe.js +15 -29
  133. package/lines/Wireframe.mjs +31 -0
  134. package/lines/WireframeGeometry2.js +8 -9
  135. package/lines/WireframeGeometry2.mjs +13 -0
  136. package/loaders/3DMLoader.js +234 -469
  137. package/loaders/3DMLoader.mjs +802 -0
  138. package/loaders/3MFLoader.js +340 -555
  139. package/loaders/3MFLoader.mjs +837 -0
  140. package/loaders/AMFLoader.js +114 -219
  141. package/loaders/AMFLoader.mjs +284 -0
  142. package/loaders/AssimpLoader.js +328 -725
  143. package/loaders/AssimpLoader.mjs +1396 -0
  144. package/loaders/BVHLoader.js +94 -200
  145. package/loaders/BVHLoader.mjs +207 -0
  146. package/loaders/BasisTextureLoader.js +229 -357
  147. package/loaders/BasisTextureLoader.mjs +474 -0
  148. package/loaders/ColladaLoader.js +932 -1522
  149. package/loaders/ColladaLoader.mjs +2403 -0
  150. package/loaders/DDSLoader.js +42 -108
  151. package/loaders/DDSLoader.mjs +148 -0
  152. package/loaders/DRACOLoader.js +103 -210
  153. package/loaders/DRACOLoader.mjs +340 -0
  154. package/loaders/EXRLoader.js +461 -809
  155. package/loaders/EXRLoader.mjs +1351 -0
  156. package/loaders/FBXLoader.js +842 -1397
  157. package/loaders/FBXLoader.mjs +2362 -0
  158. package/loaders/FontLoader.js +33 -66
  159. package/loaders/FontLoader.mjs +111 -0
  160. package/loaders/GCodeLoader.js +63 -111
  161. package/loaders/GCodeLoader.mjs +141 -0
  162. package/loaders/GLTFLoader.js +771 -1484
  163. package/loaders/GLTFLoader.mjs +2316 -0
  164. package/loaders/HDRCubeTextureLoader.js +45 -50
  165. package/loaders/HDRCubeTextureLoader.mjs +77 -0
  166. package/loaders/KMZLoader.js +42 -55
  167. package/loaders/KMZLoader.mjs +75 -0
  168. package/loaders/KTX2Loader.js +229 -362
  169. package/loaders/KTX2Loader.mjs +427 -0
  170. package/loaders/KTXLoader.js +37 -99
  171. package/loaders/KTXLoader.mjs +87 -0
  172. package/loaders/LDrawLoader.js +313 -746
  173. package/loaders/LDrawLoader.mjs +1409 -0
  174. package/loaders/LUT3dlLoader.js +50 -62
  175. package/loaders/LUT3dlLoader.mjs +100 -0
  176. package/loaders/LUTCubeLoader.js +45 -56
  177. package/loaders/LUTCubeLoader.mjs +104 -0
  178. package/loaders/LWOLoader.js +227 -339
  179. package/loaders/LWOLoader.mjs +625 -0
  180. package/loaders/LottieLoader.js +36 -38
  181. package/loaders/LottieLoader.mjs +47 -0
  182. package/loaders/MD2Loader.js +248 -91
  183. package/loaders/MD2Loader.mjs +359 -0
  184. package/loaders/MDDLoader.js +25 -45
  185. package/loaders/MDDLoader.mjs +58 -0
  186. package/loaders/MMDLoader.js +359 -795
  187. package/loaders/MMDLoader.mjs +998 -0
  188. package/loaders/MTLLoader.js +91 -201
  189. package/loaders/MTLLoader.mjs +280 -0
  190. package/loaders/NRRDLoader.js +182 -263
  191. package/loaders/NRRDLoader.mjs +401 -0
  192. package/loaders/NodeMaterialLoader.js +121 -14
  193. package/loaders/NodeMaterialLoader.mjs +146 -0
  194. package/loaders/OBJLoader.js +161 -283
  195. package/loaders/OBJLoader.mjs +487 -0
  196. package/loaders/PCDLoader.js +145 -164
  197. package/loaders/PCDLoader.mjs +248 -0
  198. package/loaders/PDBLoader.js +45 -63
  199. package/loaders/PDBLoader.mjs +246 -0
  200. package/loaders/PLYLoader.js +106 -203
  201. package/loaders/PLYLoader.mjs +317 -0
  202. package/loaders/PRWMLoader.js +73 -110
  203. package/loaders/PRWMLoader.mjs +160 -0
  204. package/loaders/PVRLoader.js +32 -93
  205. package/loaders/PVRLoader.mjs +131 -0
  206. package/loaders/RGBELoader.js +96 -233
  207. package/loaders/RGBELoader.mjs +244 -0
  208. package/loaders/RGBMLoader.js +344 -514
  209. package/loaders/RGBMLoader.mjs +998 -0
  210. package/loaders/STLLoader.js +59 -165
  211. package/loaders/STLLoader.mjs +190 -0
  212. package/loaders/SVGLoader.js +481 -851
  213. package/loaders/SVGLoader.mjs +1709 -0
  214. package/loaders/TDSLoader.js +137 -527
  215. package/loaders/TDSLoader.mjs +480 -0
  216. package/loaders/TGALoader.js +94 -205
  217. package/loaders/TGALoader.mjs +285 -0
  218. package/loaders/TTFLoader.js +58 -79
  219. package/loaders/TTFLoader.mjs +131 -0
  220. package/loaders/TiltLoader.js +129 -167
  221. package/loaders/TiltLoader.mjs +373 -0
  222. package/loaders/VOXLoader.js +320 -84
  223. package/loaders/VOXLoader.mjs +431 -0
  224. package/loaders/VRMLLoader.js +786 -1268
  225. package/loaders/VRMLLoader.mjs +2093 -0
  226. package/loaders/VRMLoader.js +23 -31
  227. package/loaders/VRMLoader.mjs +38 -0
  228. package/loaders/VTKLoader.js +219 -407
  229. package/loaders/VTKLoader.mjs +646 -0
  230. package/loaders/XLoader.js +1083 -1259
  231. package/loaders/XLoader.mjs +1258 -0
  232. package/loaders/XYZLoader.js +28 -34
  233. package/loaders/XYZLoader.mjs +60 -0
  234. package/loaders/lwo/IFFParser.js +238 -492
  235. package/loaders/lwo/IFFParser.mjs +697 -0
  236. package/loaders/lwo/LWO2Parser.js +176 -279
  237. package/loaders/lwo/LWO2Parser.mjs +327 -0
  238. package/loaders/lwo/LWO3Parser.js +160 -247
  239. package/loaders/lwo/LWO3Parser.mjs +298 -0
  240. package/math/Capsule.js +56 -43
  241. package/math/Capsule.mjs +100 -0
  242. package/math/ColorConverter.js +18 -32
  243. package/math/ColorConverter.mjs +51 -0
  244. package/math/ConvexHull.js +515 -739
  245. package/math/ConvexHull.mjs +574 -0
  246. package/math/ImprovedNoise.js +282 -32
  247. package/math/ImprovedNoise.mjs +302 -0
  248. package/math/Lut.js +51 -35
  249. package/math/Lut.mjs +135 -0
  250. package/math/MeshSurfaceSampler.js +25 -68
  251. package/math/MeshSurfaceSampler.mjs +107 -0
  252. package/math/OBB.js +91 -152
  253. package/math/OBB.mjs +235 -0
  254. package/math/Octree.js +76 -139
  255. package/math/Octree.mjs +278 -0
  256. package/math/SimplexNoise.js +217 -238
  257. package/math/SimplexNoise.mjs +425 -0
  258. package/misc/ConvexObjectBreaker.js +79 -185
  259. package/misc/ConvexObjectBreaker.mjs +292 -0
  260. package/misc/GPUComputationRenderer.js +69 -194
  261. package/misc/GPUComputationRenderer.mjs +171 -0
  262. package/misc/Gyroscope.js +16 -22
  263. package/misc/Gyroscope.mjs +35 -0
  264. package/misc/MD2Character.js +52 -74
  265. package/misc/MD2Character.mjs +162 -0
  266. package/misc/MD2CharacterComplex.js +112 -163
  267. package/misc/MD2CharacterComplex.mjs +328 -0
  268. package/misc/MorphAnimMesh.js +20 -28
  269. package/misc/MorphAnimMesh.mjs +40 -0
  270. package/misc/MorphBlendMesh.js +45 -69
  271. package/misc/MorphBlendMesh.mjs +179 -0
  272. package/misc/ProgressiveLightmap.js +70 -187
  273. package/misc/ProgressiveLightmap.mjs +166 -0
  274. package/misc/RollerCoaster.js +106 -135
  275. package/misc/RollerCoaster.mjs +346 -0
  276. package/misc/TubePainter.js +74 -92
  277. package/misc/TubePainter.mjs +123 -0
  278. package/misc/Volume.js +108 -270
  279. package/misc/Volume.mjs +244 -0
  280. package/misc/VolumeSlice.js +34 -122
  281. package/misc/VolumeSlice.mjs +106 -0
  282. package/misc/WebGL.js +37 -34
  283. package/misc/WebGL.mjs +74 -0
  284. package/modifiers/CurveModifier.js +46 -151
  285. package/modifiers/CurveModifier.mjs +182 -0
  286. package/modifiers/EdgeSplitModifier.js +46 -90
  287. package/modifiers/EdgeSplitModifier.mjs +162 -0
  288. package/modifiers/SimplifyModifier.js +77 -202
  289. package/modifiers/SimplifyModifier.mjs +282 -0
  290. package/modifiers/TessellateModifier.js +65 -90
  291. package/modifiers/TessellateModifier.mjs +206 -0
  292. package/nodes/Nodes.js +274 -140
  293. package/nodes/Nodes.mjs +400 -0
  294. package/nodes/ShaderNode.js +296 -196
  295. package/nodes/ShaderNode.mjs +408 -0
  296. package/nodes/accessors/BufferNode.js +4 -8
  297. package/nodes/accessors/BufferNode.mjs +15 -0
  298. package/nodes/accessors/CameraNode.js +20 -25
  299. package/nodes/accessors/CameraNode.mjs +44 -0
  300. package/nodes/accessors/CubeTextureNode.js +14 -26
  301. package/nodes/accessors/CubeTextureNode.mjs +42 -0
  302. package/nodes/accessors/MaterialNode.js +43 -53
  303. package/nodes/accessors/MaterialNode.mjs +71 -0
  304. package/nodes/accessors/MaterialReferenceNode.js +3 -6
  305. package/nodes/accessors/MaterialReferenceNode.mjs +14 -0
  306. package/nodes/accessors/ModelNode.js +3 -5
  307. package/nodes/accessors/ModelNode.mjs +9 -0
  308. package/nodes/accessors/ModelViewProjectionNode.js +14 -13
  309. package/nodes/accessors/ModelViewProjectionNode.mjs +24 -0
  310. package/nodes/accessors/NormalNode.js +40 -39
  311. package/nodes/accessors/NormalNode.mjs +62 -0
  312. package/nodes/accessors/Object3DNode.js +40 -50
  313. package/nodes/accessors/Object3DNode.mjs +76 -0
  314. package/nodes/accessors/PointUVNode.js +5 -9
  315. package/nodes/accessors/PointUVNode.mjs +13 -0
  316. package/nodes/accessors/PositionNode.js +42 -41
  317. package/nodes/accessors/PositionNode.mjs +65 -0
  318. package/nodes/accessors/ReferenceNode.js +10 -17
  319. package/nodes/accessors/ReferenceNode.mjs +37 -0
  320. package/nodes/accessors/ReflectNode.js +23 -26
  321. package/nodes/accessors/ReflectNode.mjs +43 -0
  322. package/nodes/accessors/SkinningNode.js +46 -48
  323. package/nodes/accessors/SkinningNode.mjs +58 -0
  324. package/nodes/accessors/TextureNode.js +14 -29
  325. package/nodes/accessors/TextureNode.mjs +54 -0
  326. package/nodes/accessors/UVNode.js +5 -11
  327. package/nodes/accessors/UVNode.mjs +23 -0
  328. package/nodes/core/ArrayUniformNode.js +3 -7
  329. package/nodes/core/ArrayUniformNode.mjs +14 -0
  330. package/nodes/core/AttributeNode.js +5 -12
  331. package/nodes/core/AttributeNode.mjs +30 -0
  332. package/nodes/core/BypassNode.js +5 -12
  333. package/nodes/core/BypassNode.mjs +22 -0
  334. package/nodes/core/CodeNode.js +4 -12
  335. package/nodes/core/CodeNode.mjs +28 -0
  336. package/nodes/core/ConstNode.js +3 -7
  337. package/nodes/core/ConstNode.mjs +14 -0
  338. package/nodes/core/ContextNode.js +3 -8
  339. package/nodes/core/ContextNode.mjs +22 -0
  340. package/nodes/core/ExpressionNode.js +5 -9
  341. package/nodes/core/ExpressionNode.mjs +19 -0
  342. package/nodes/core/FunctionCallNode.js +6 -15
  343. package/nodes/core/FunctionCallNode.mjs +37 -0
  344. package/nodes/core/FunctionNode.js +10 -25
  345. package/nodes/core/FunctionNode.mjs +56 -0
  346. package/nodes/core/InputNode.js +12 -23
  347. package/nodes/core/InputNode.mjs +38 -0
  348. package/nodes/core/Node.js +35 -75
  349. package/nodes/core/Node.mjs +139 -0
  350. package/nodes/core/NodeAttribute.js +2 -4
  351. package/nodes/core/NodeAttribute.mjs +10 -0
  352. package/nodes/core/NodeBuilder.js +110 -224
  353. package/nodes/core/NodeBuilder.mjs +395 -0
  354. package/nodes/core/NodeCode.js +4 -7
  355. package/nodes/core/NodeCode.mjs +11 -0
  356. package/nodes/core/NodeFrame.js +9 -12
  357. package/nodes/core/NodeFrame.mjs +35 -0
  358. package/nodes/core/NodeFunctionInput.js +3 -5
  359. package/nodes/core/NodeFunctionInput.mjs +13 -0
  360. package/nodes/core/NodeKeywords.js +5 -16
  361. package/nodes/core/NodeKeywords.mjs +44 -0
  362. package/nodes/core/NodeUniform.js +3 -7
  363. package/nodes/core/NodeUniform.mjs +18 -0
  364. package/nodes/core/NodeUtils.js +39 -43
  365. package/nodes/core/NodeUtils.mjs +57 -0
  366. package/nodes/core/NodeVar.js +2 -4
  367. package/nodes/core/NodeVar.mjs +10 -0
  368. package/nodes/core/NodeVary.js +2 -4
  369. package/nodes/core/NodeVary.mjs +10 -0
  370. package/nodes/core/PropertyNode.js +4 -10
  371. package/nodes/core/PropertyNode.mjs +21 -0
  372. package/nodes/core/TempNode.js +5 -11
  373. package/nodes/core/TempNode.mjs +25 -0
  374. package/nodes/core/UniformNode.js +4 -10
  375. package/nodes/core/UniformNode.mjs +23 -0
  376. package/nodes/core/VarNode.js +3 -11
  377. package/nodes/core/VarNode.mjs +31 -0
  378. package/nodes/core/VaryNode.js +6 -15
  379. package/nodes/core/VaryNode.mjs +30 -0
  380. package/nodes/core/constants.js +20 -7
  381. package/nodes/core/constants.mjs +24 -0
  382. package/nodes/display/ColorSpaceNode.js +34 -38
  383. package/nodes/display/ColorSpaceNode.mjs +63 -0
  384. package/nodes/display/NormalMapNode.js +35 -53
  385. package/nodes/display/NormalMapNode.mjs +54 -0
  386. package/nodes/fog/FogNode.js +5 -9
  387. package/nodes/fog/FogNode.mjs +15 -0
  388. package/nodes/fog/FogRangeNode.js +5 -9
  389. package/nodes/fog/FogRangeNode.mjs +17 -0
  390. package/nodes/functions/BSDFs.js +61 -118
  391. package/nodes/functions/BSDFs.mjs +64 -0
  392. package/nodes/lights/LightContextNode.js +14 -23
  393. package/nodes/lights/LightContextNode.mjs +35 -0
  394. package/nodes/lights/LightNode.js +27 -31
  395. package/nodes/lights/LightNode.mjs +58 -0
  396. package/nodes/lights/LightsNode.js +9 -28
  397. package/nodes/lights/LightsNode.mjs +59 -0
  398. package/nodes/loaders/NodeLoader.js +27 -42
  399. package/nodes/loaders/NodeLoader.mjs +66 -0
  400. package/nodes/loaders/NodeMaterialLoader.js +4 -10
  401. package/nodes/loaders/NodeMaterialLoader.mjs +24 -0
  402. package/nodes/loaders/NodeObjectLoader.js +9 -19
  403. package/nodes/loaders/NodeObjectLoader.mjs +40 -0
  404. package/nodes/materials/LineBasicNodeMaterial.js +5 -10
  405. package/nodes/materials/LineBasicNodeMaterial.mjs +27 -0
  406. package/nodes/materials/Materials.js +14 -17
  407. package/nodes/materials/Materials.mjs +28 -0
  408. package/nodes/materials/MeshBasicNodeMaterial.js +5 -10
  409. package/nodes/materials/MeshBasicNodeMaterial.mjs +28 -0
  410. package/nodes/materials/MeshStandardNodeMaterial.js +5 -8
  411. package/nodes/materials/MeshStandardNodeMaterial.mjs +41 -0
  412. package/nodes/materials/NodeMaterial.js +20 -36
  413. package/nodes/materials/NodeMaterial.mjs +64 -0
  414. package/nodes/materials/PointsNodeMaterial.js +5 -10
  415. package/nodes/materials/PointsNodeMaterial.mjs +30 -0
  416. package/nodes/math/CondNode.js +11 -23
  417. package/nodes/math/CondNode.mjs +38 -0
  418. package/nodes/math/MathNode.js +98 -142
  419. package/nodes/math/MathNode.mjs +163 -0
  420. package/nodes/math/OperatorNode.js +24 -46
  421. package/nodes/math/OperatorNode.mjs +103 -0
  422. package/nodes/procedural/CheckerNode.js +13 -19
  423. package/nodes/procedural/CheckerNode.mjs +21 -0
  424. package/nodes/utils/ArrayElementNode.js +4 -8
  425. package/nodes/utils/ArrayElementNode.mjs +19 -0
  426. package/nodes/utils/ConvertNode.js +3 -8
  427. package/nodes/utils/ConvertNode.mjs +25 -0
  428. package/nodes/utils/JoinNode.js +7 -11
  429. package/nodes/utils/JoinNode.mjs +26 -0
  430. package/nodes/utils/MatcapUVNode.js +8 -11
  431. package/nodes/utils/MatcapUVNode.mjs +16 -0
  432. package/nodes/utils/OscNode.js +27 -33
  433. package/nodes/utils/OscNode.mjs +50 -0
  434. package/nodes/utils/SplitNode.js +6 -20
  435. package/nodes/utils/SplitNode.mjs +45 -0
  436. package/nodes/utils/SpriteSheetUVNode.js +23 -23
  437. package/nodes/utils/SpriteSheetUVNode.mjs +40 -0
  438. package/nodes/utils/TimerNode.js +20 -24
  439. package/nodes/utils/TimerNode.mjs +44 -0
  440. package/objects/GroundProjectedEnv.js +22 -37
  441. package/objects/GroundProjectedEnv.mjs +130 -0
  442. package/objects/Lensflare.js +86 -156
  443. package/objects/Lensflare.mjs +262 -0
  444. package/objects/LightningStorm.js +38 -102
  445. package/objects/LightningStorm.mjs +110 -0
  446. package/objects/MarchingCubes.js +150 -303
  447. package/objects/MarchingCubes.mjs +457 -0
  448. package/objects/Reflector.js +50 -72
  449. package/objects/Reflector.mjs +166 -0
  450. package/objects/ReflectorForSSRPass.js +80 -131
  451. package/objects/ReflectorForSSRPass.mjs +247 -0
  452. package/objects/ReflectorRTT.js +6 -7
  453. package/objects/ReflectorRTT.mjs +10 -0
  454. package/objects/Refractor.js +64 -106
  455. package/objects/Refractor.mjs +178 -0
  456. package/objects/ShadowMesh.js +8 -17
  457. package/objects/ShadowMesh.mjs +41 -0
  458. package/objects/Sky.js +119 -80
  459. package/objects/Sky.mjs +124 -0
  460. package/objects/Water.js +83 -127
  461. package/objects/Water.mjs +235 -0
  462. package/objects/Water2.js +72 -108
  463. package/objects/Water2.mjs +252 -0
  464. package/offscreen/jank.js +10 -14
  465. package/offscreen/jank.mjs +27 -0
  466. package/offscreen/offscreen.js +4 -5
  467. package/offscreen/offscreen.mjs +5 -0
  468. package/offscreen/scene.js +45 -48
  469. package/offscreen/scene.mjs +52 -0
  470. package/package.json +3 -3
  471. package/physics/AmmoPhysics.js +30 -71
  472. package/physics/AmmoPhysics.mjs +165 -0
  473. package/postprocessing/AdaptiveToneMappingPass.js +97 -123
  474. package/postprocessing/AdaptiveToneMappingPass.mjs +221 -0
  475. package/postprocessing/AfterimagePass.js +28 -49
  476. package/postprocessing/AfterimagePass.mjs +55 -0
  477. package/postprocessing/BloomPass.js +43 -69
  478. package/postprocessing/BloomPass.mjs +90 -0
  479. package/postprocessing/BokehPass.js +39 -69
  480. package/postprocessing/BokehPass.mjs +76 -0
  481. package/postprocessing/ClearPass.js +10 -25
  482. package/postprocessing/ClearPass.mjs +27 -0
  483. package/postprocessing/CubeTexturePass.js +28 -27
  484. package/postprocessing/CubeTexturePass.mjs +49 -0
  485. package/postprocessing/DotScreenPass.js +24 -32
  486. package/postprocessing/DotScreenPass.mjs +40 -0
  487. package/postprocessing/EffectComposer.js +39 -86
  488. package/postprocessing/EffectComposer.mjs +139 -0
  489. package/postprocessing/FilmPass.js +25 -30
  490. package/postprocessing/FilmPass.mjs +42 -0
  491. package/postprocessing/GlitchPass.js +38 -61
  492. package/postprocessing/GlitchPass.mjs +75 -0
  493. package/postprocessing/HalftonePass.js +19 -39
  494. package/postprocessing/HalftonePass.mjs +44 -0
  495. package/postprocessing/LUTPass.js +13 -38
  496. package/postprocessing/LUTPass.mjs +136 -0
  497. package/postprocessing/MaskPass.js +19 -38
  498. package/postprocessing/MaskPass.mjs +60 -0
  499. package/postprocessing/OutlinePass.js +135 -277
  500. package/postprocessing/OutlinePass.mjs +438 -0
  501. package/postprocessing/Pass.js +20 -44
  502. package/postprocessing/Pass.mjs +37 -0
  503. package/postprocessing/RenderPass.js +13 -36
  504. package/postprocessing/RenderPass.mjs +48 -0
  505. package/postprocessing/RenderPixelatedPass.js +44 -58
  506. package/postprocessing/RenderPixelatedPass.mjs +199 -0
  507. package/postprocessing/SAOPass.js +154 -189
  508. package/postprocessing/SAOPass.mjs +282 -0
  509. package/postprocessing/SMAAPass.js +64 -84
  510. package/postprocessing/SMAAPass.mjs +112 -0
  511. package/postprocessing/SSAARenderPass.js +121 -69
  512. package/postprocessing/SSAARenderPass.mjs +170 -0
  513. package/postprocessing/SSAOPass.js +123 -172
  514. package/postprocessing/SSAOPass.mjs +265 -0
  515. package/postprocessing/SSRPass.js +211 -280
  516. package/postprocessing/SSRPass.mjs +432 -0
  517. package/postprocessing/SavePass.js +20 -25
  518. package/postprocessing/SavePass.mjs +37 -0
  519. package/postprocessing/ShaderPass.js +14 -30
  520. package/postprocessing/ShaderPass.mjs +39 -0
  521. package/postprocessing/TAARenderPass.js +42 -61
  522. package/postprocessing/TAARenderPass.mjs +88 -0
  523. package/postprocessing/TexturePass.js +21 -22
  524. package/postprocessing/TexturePass.mjs +39 -0
  525. package/postprocessing/UnrealBloomPass.js +105 -213
  526. package/postprocessing/UnrealBloomPass.mjs +220 -0
  527. package/renderers/CSS2DRenderer.js +44 -56
  528. package/renderers/CSS2DRenderer.mjs +112 -0
  529. package/renderers/CSS3DRenderer.js +53 -86
  530. package/renderers/CSS3DRenderer.mjs +133 -0
  531. package/renderers/Projector.js +107 -274
  532. package/renderers/Projector.mjs +511 -0
  533. package/renderers/SVGRenderer.js +72 -182
  534. package/renderers/SVGRenderer.mjs +306 -0
  535. package/renderers/nodes/accessors/CameraNode.js +29 -40
  536. package/renderers/nodes/accessors/CameraNode.mjs +63 -0
  537. package/renderers/nodes/accessors/ModelNode.js +28 -37
  538. package/renderers/nodes/accessors/ModelNode.mjs +61 -0
  539. package/renderers/nodes/accessors/ModelViewProjectionNode.js +10 -23
  540. package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +21 -0
  541. package/renderers/nodes/accessors/NormalNode.js +35 -45
  542. package/renderers/nodes/accessors/NormalNode.mjs +61 -0
  543. package/renderers/nodes/accessors/PositionNode.js +18 -19
  544. package/renderers/nodes/accessors/PositionNode.mjs +30 -0
  545. package/renderers/nodes/accessors/UVNode.js +5 -10
  546. package/renderers/nodes/accessors/UVNode.mjs +13 -0
  547. package/renderers/nodes/core/AttributeNode.js +5 -14
  548. package/renderers/nodes/core/AttributeNode.mjs +35 -0
  549. package/renderers/nodes/core/InputNode.js +4 -14
  550. package/renderers/nodes/core/InputNode.mjs +31 -0
  551. package/renderers/nodes/core/Node.js +7 -17
  552. package/renderers/nodes/core/Node.mjs +34 -0
  553. package/renderers/nodes/core/NodeAttribute.js +3 -6
  554. package/renderers/nodes/core/NodeAttribute.mjs +10 -0
  555. package/renderers/nodes/core/NodeBuilder.js +87 -154
  556. package/renderers/nodes/core/NodeBuilder.mjs +243 -0
  557. package/renderers/nodes/core/NodeFrame.js +9 -12
  558. package/renderers/nodes/core/NodeFrame.mjs +35 -0
  559. package/renderers/nodes/core/NodeSlot.js +2 -3
  560. package/renderers/nodes/core/NodeSlot.mjs +10 -0
  561. package/renderers/nodes/core/NodeUniform.js +4 -9
  562. package/renderers/nodes/core/NodeUniform.mjs +18 -0
  563. package/renderers/nodes/core/NodeVary.js +4 -7
  564. package/renderers/nodes/core/NodeVary.mjs +11 -0
  565. package/renderers/nodes/core/VaryNode.js +6 -12
  566. package/renderers/nodes/core/VaryNode.mjs +22 -0
  567. package/renderers/nodes/core/constants.js +16 -13
  568. package/renderers/nodes/core/constants.mjs +22 -0
  569. package/renderers/nodes/inputs/ColorNode.js +5 -11
  570. package/renderers/nodes/inputs/ColorNode.mjs +11 -0
  571. package/renderers/nodes/inputs/FloatNode.js +5 -11
  572. package/renderers/nodes/inputs/FloatNode.mjs +11 -0
  573. package/renderers/nodes/inputs/Matrix3Node.js +7 -13
  574. package/renderers/nodes/inputs/Matrix3Node.mjs +12 -0
  575. package/renderers/nodes/inputs/Matrix4Node.js +7 -13
  576. package/renderers/nodes/inputs/Matrix4Node.mjs +12 -0
  577. package/renderers/nodes/inputs/TextureNode.js +7 -15
  578. package/renderers/nodes/inputs/TextureNode.mjs +20 -0
  579. package/renderers/nodes/inputs/Vector2Node.js +5 -11
  580. package/renderers/nodes/inputs/Vector2Node.mjs +11 -0
  581. package/renderers/nodes/inputs/Vector3Node.js +7 -13
  582. package/renderers/nodes/inputs/Vector3Node.mjs +12 -0
  583. package/renderers/nodes/inputs/Vector4Node.js +7 -13
  584. package/renderers/nodes/inputs/Vector4Node.mjs +12 -0
  585. package/renderers/nodes/math/MathNode.js +20 -30
  586. package/renderers/nodes/math/MathNode.mjs +55 -0
  587. package/renderers/nodes/math/OperatorNode.js +4 -20
  588. package/renderers/nodes/math/OperatorNode.mjs +42 -0
  589. package/renderers/nodes/utils/SwitchNode.js +4 -9
  590. package/renderers/nodes/utils/SwitchNode.mjs +20 -0
  591. package/renderers/nodes/utils/TimerNode.js +5 -10
  592. package/renderers/nodes/utils/TimerNode.mjs +14 -0
  593. package/renderers/webgpu/WebGPU.js +14 -16
  594. package/renderers/webgpu/WebGPU.mjs +24 -0
  595. package/renderers/webgpu/WebGPUAttributes.js +16 -23
  596. package/renderers/webgpu/WebGPUAttributes.mjs +69 -0
  597. package/renderers/webgpu/WebGPUBackground.js +13 -30
  598. package/renderers/webgpu/WebGPUBackground.mjs +61 -0
  599. package/renderers/webgpu/WebGPUBinding.js +4 -7
  600. package/renderers/webgpu/WebGPUBinding.mjs +14 -0
  601. package/renderers/webgpu/WebGPUBindings.js +21 -57
  602. package/renderers/webgpu/WebGPUBindings.mjs +155 -0
  603. package/renderers/webgpu/WebGPUComputePipelines.js +14 -25
  604. package/renderers/webgpu/WebGPUComputePipelines.mjs +44 -0
  605. package/renderers/webgpu/WebGPUGeometries.js +5 -15
  606. package/renderers/webgpu/WebGPUGeometries.mjs +41 -0
  607. package/renderers/webgpu/WebGPUInfo.js +3 -8
  608. package/renderers/webgpu/WebGPUInfo.mjs +46 -0
  609. package/renderers/webgpu/WebGPUObjects.js +5 -10
  610. package/renderers/webgpu/WebGPUObjects.mjs +25 -0
  611. package/renderers/webgpu/WebGPUProperties.js +5 -11
  612. package/renderers/webgpu/WebGPUProperties.mjs +22 -0
  613. package/renderers/webgpu/WebGPURenderLists.js +20 -36
  614. package/renderers/webgpu/WebGPURenderLists.mjs +119 -0
  615. package/renderers/webgpu/WebGPURenderPipelines.js +260 -387
  616. package/renderers/webgpu/WebGPURenderPipelines.mjs +545 -0
  617. package/renderers/webgpu/WebGPURenderer.js +124 -262
  618. package/renderers/webgpu/WebGPURenderer.mjs +574 -0
  619. package/renderers/webgpu/WebGPUSampledTexture.js +18 -31
  620. package/renderers/webgpu/WebGPUSampledTexture.mjs +40 -0
  621. package/renderers/webgpu/WebGPUSampler.js +7 -12
  622. package/renderers/webgpu/WebGPUSampler.mjs +15 -0
  623. package/renderers/webgpu/WebGPUStorageBuffer.js +7 -12
  624. package/renderers/webgpu/WebGPUStorageBuffer.mjs +15 -0
  625. package/renderers/webgpu/WebGPUTextureRenderer.js +5 -11
  626. package/renderers/webgpu/WebGPUTextureRenderer.mjs +23 -0
  627. package/renderers/webgpu/WebGPUTextureUtils.js +29 -40
  628. package/renderers/webgpu/WebGPUTextureUtils.mjs +98 -0
  629. package/renderers/webgpu/WebGPUTextures.js +186 -333
  630. package/renderers/webgpu/WebGPUTextures.mjs +484 -0
  631. package/renderers/webgpu/WebGPUUniform.js +25 -51
  632. package/renderers/webgpu/WebGPUUniform.mjs +81 -0
  633. package/renderers/webgpu/WebGPUUniformsGroup.js +32 -72
  634. package/renderers/webgpu/WebGPUUniformsGroup.mjs +176 -0
  635. package/renderers/webgpu/constants.js +190 -181
  636. package/renderers/webgpu/constants.mjs +230 -0
  637. package/renderers/webgpu/nodes/ShaderLib.js +2 -2
  638. package/renderers/webgpu/nodes/ShaderLib.mjs +42 -0
  639. package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +53 -124
  640. package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +165 -0
  641. package/renderers/webgpu/nodes/WebGPUNodeUniform.js +17 -31
  642. package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +73 -0
  643. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +8 -9
  644. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +15 -0
  645. package/renderers/webgpu/nodes/WebGPUNodes.js +7 -45
  646. package/renderers/webgpu/nodes/WebGPUNodes.mjs +40 -0
  647. package/shaders/ACESFilmicToneMappingShader.js +44 -24
  648. package/shaders/ACESFilmicToneMappingShader.mjs +48 -0
  649. package/shaders/AfterimageShader.js +28 -18
  650. package/shaders/AfterimageShader.mjs +32 -0
  651. package/shaders/BasicShader.js +9 -7
  652. package/shaders/BasicShader.mjs +12 -0
  653. package/shaders/BleachBypassShader.js +31 -15
  654. package/shaders/BleachBypassShader.mjs +35 -0
  655. package/shaders/BlendShader.js +26 -19
  656. package/shaders/BlendShader.mjs +30 -0
  657. package/shaders/BokehShader.js +98 -36
  658. package/shaders/BokehShader.mjs +106 -0
  659. package/shaders/BokehShader2.js +261 -90
  660. package/shaders/BokehShader2.mjs +269 -0
  661. package/shaders/BrightnessContrastShader.js +28 -19
  662. package/shaders/BrightnessContrastShader.mjs +32 -0
  663. package/shaders/ColorCorrectionShader.js +26 -22
  664. package/shaders/ColorCorrectionShader.mjs +30 -0
  665. package/shaders/ColorifyShader.js +24 -16
  666. package/shaders/ColorifyShader.mjs +28 -0
  667. package/shaders/ConvolutionShader.js +40 -36
  668. package/shaders/ConvolutionShader.mjs +55 -0
  669. package/shaders/CopyShader.js +21 -13
  670. package/shaders/CopyShader.mjs +25 -0
  671. package/shaders/DOFMipMapShader.js +28 -21
  672. package/shaders/DOFMipMapShader.mjs +32 -0
  673. package/shaders/DepthLimitedBlurShader.js +85 -40
  674. package/shaders/DepthLimitedBlurShader.mjs +114 -0
  675. package/shaders/DigitalGlitch.js +74 -46
  676. package/shaders/DigitalGlitch.mjs +78 -0
  677. package/shaders/DotScreenShader.js +35 -27
  678. package/shaders/DotScreenShader.mjs +39 -0
  679. package/shaders/FXAAShader.js +1094 -19
  680. package/shaders/FXAAShader.mjs +1098 -0
  681. package/shaders/FilmShader.js +38 -52
  682. package/shaders/FilmShader.mjs +42 -0
  683. package/shaders/FocusShader.js +51 -24
  684. package/shaders/FocusShader.mjs +55 -0
  685. package/shaders/FreiChenShader.js +57 -24
  686. package/shaders/FreiChenShader.mjs +61 -0
  687. package/shaders/FresnelShader.js +43 -22
  688. package/shaders/FresnelShader.mjs +47 -0
  689. package/shaders/GammaCorrectionShader.js +19 -11
  690. package/shaders/GammaCorrectionShader.mjs +23 -0
  691. package/shaders/GodRaysShader.js +103 -94
  692. package/shaders/GodRaysShader.mjs +146 -0
  693. package/shaders/HalftoneShader.js +208 -65
  694. package/shaders/HalftoneShader.mjs +212 -0
  695. package/shaders/HorizontalBlurShader.js +7 -23
  696. package/shaders/HorizontalBlurShader.mjs +43 -0
  697. package/shaders/HorizontalTiltShiftShader.js +33 -21
  698. package/shaders/HorizontalTiltShiftShader.mjs +37 -0
  699. package/shaders/HueSaturationShader.js +37 -21
  700. package/shaders/HueSaturationShader.mjs +41 -0
  701. package/shaders/KaleidoShader.js +30 -22
  702. package/shaders/KaleidoShader.mjs +34 -0
  703. package/shaders/LuminosityHighPassShader.js +33 -27
  704. package/shaders/LuminosityHighPassShader.mjs +37 -0
  705. package/shaders/LuminosityShader.js +21 -11
  706. package/shaders/LuminosityShader.mjs +25 -0
  707. package/shaders/MirrorShader.js +31 -16
  708. package/shaders/MirrorShader.mjs +35 -0
  709. package/shaders/NormalMapShader.js +27 -23
  710. package/shaders/NormalMapShader.mjs +31 -0
  711. package/shaders/ParallaxShader.js +107 -48
  712. package/shaders/ParallaxShader.mjs +113 -0
  713. package/shaders/PixelShader.js +24 -16
  714. package/shaders/PixelShader.mjs +28 -0
  715. package/shaders/RGBShiftShader.js +26 -22
  716. package/shaders/RGBShiftShader.mjs +30 -0
  717. package/shaders/SAOShader.js +132 -48
  718. package/shaders/SAOShader.mjs +144 -0
  719. package/shaders/SMAAShader.js +256 -135
  720. package/shaders/SMAAShader.mjs +272 -0
  721. package/shaders/SSAOShader.js +153 -81
  722. package/shaders/SSAOShader.mjs +172 -0
  723. package/shaders/SSRShader.js +32 -87
  724. package/shaders/SSRShader.mjs +324 -0
  725. package/shaders/SepiaShader.js +25 -15
  726. package/shaders/SepiaShader.mjs +29 -0
  727. package/shaders/SobelOperatorShader.js +40 -29
  728. package/shaders/SobelOperatorShader.mjs +44 -0
  729. package/shaders/SubsurfaceScatteringShader.js +53 -39
  730. package/shaders/SubsurfaceScatteringShader.mjs +59 -0
  731. package/shaders/TechnicolorShader.js +20 -13
  732. package/shaders/TechnicolorShader.mjs +24 -0
  733. package/shaders/ToneMapShader.js +44 -28
  734. package/shaders/ToneMapShader.mjs +48 -0
  735. package/shaders/ToonShader.js +172 -96
  736. package/shaders/ToonShader.mjs +188 -0
  737. package/shaders/TriangleBlurShader.js +32 -23
  738. package/shaders/TriangleBlurShader.mjs +36 -0
  739. package/shaders/UnpackDepthRGBAShader.js +22 -14
  740. package/shaders/UnpackDepthRGBAShader.mjs +26 -0
  741. package/shaders/VerticalBlurShader.js +7 -23
  742. package/shaders/VerticalBlurShader.mjs +44 -0
  743. package/shaders/VerticalTiltShiftShader.js +33 -21
  744. package/shaders/VerticalTiltShiftShader.mjs +37 -0
  745. package/shaders/VignetteShader.js +24 -28
  746. package/shaders/VignetteShader.mjs +28 -0
  747. package/shaders/VolumeShader.js +174 -77
  748. package/shaders/VolumeShader.mjs +178 -0
  749. package/shaders/WaterRefractionShader.js +38 -6
  750. package/shaders/WaterRefractionShader.mjs +57 -0
  751. package/shaders/types.js +1 -1
  752. package/{custom.d.js → shaders/types.mjs} +0 -0
  753. package/textures/FlakesTexture.js +8 -10
  754. package/textures/FlakesTexture.mjs +30 -0
  755. package/types/helpers.js +3 -2
  756. package/types/helpers.mjs +4 -0
  757. package/utils/BufferGeometryUtils.js +251 -325
  758. package/utils/BufferGeometryUtils.mjs +570 -0
  759. package/utils/GeometryCompressionUtils.js +241 -239
  760. package/utils/GeometryCompressionUtils.mjs +547 -0
  761. package/utils/GeometryUtils.js +41 -94
  762. package/utils/GeometryUtils.mjs +108 -0
  763. package/utils/RoughnessMipmapper.js +38 -82
  764. package/utils/RoughnessMipmapper.mjs +213 -0
  765. package/utils/SceneUtils.js +15 -20
  766. package/utils/SceneUtils.mjs +36 -0
  767. package/utils/ShadowMapViewer.js +49 -95
  768. package/utils/ShadowMapViewer.mjs +114 -0
  769. package/utils/SkeletonUtils.js +74 -165
  770. package/utils/SkeletonUtils.mjs +292 -0
  771. package/utils/UVsDebug.js +32 -62
  772. package/utils/UVsDebug.mjs +85 -0
  773. package/utils/WorkerPool.js +13 -33
  774. package/utils/WorkerPool.mjs +62 -0
  775. package/webxr/ARButton.js +72 -98
  776. package/webxr/ARButton.mjs +119 -0
  777. package/webxr/OculusHandModel.js +18 -37
  778. package/webxr/OculusHandModel.mjs +71 -0
  779. package/webxr/OculusHandPointerModel.js +58 -80
  780. package/webxr/OculusHandPointerModel.mjs +207 -0
  781. package/webxr/Text2D.js +37 -19
  782. package/webxr/Text2D.mjs +31 -0
  783. package/webxr/VRButton.js +59 -90
  784. package/webxr/VRButton.mjs +105 -0
  785. package/webxr/XRControllerModelFactory.js +58 -116
  786. package/webxr/XRControllerModelFactory.mjs +146 -0
  787. package/webxr/XREstimatedLight.js +39 -66
  788. package/webxr/XREstimatedLight.mjs +126 -0
  789. package/webxr/XRHandMeshModel.js +40 -29
  790. package/webxr/XRHandMeshModel.mjs +73 -0
  791. package/webxr/XRHandModelFactory.js +28 -31
  792. package/webxr/XRHandModelFactory.mjs +61 -0
  793. package/webxr/XRHandPrimitiveModel.js +41 -27
  794. package/webxr/XRHandPrimitiveModel.mjs +68 -0
  795. package/BufferGeometryUtils-1a7a235c.js +0 -655
  796. package/BufferGeometryUtils-971dfde3.js +0 -1
  797. package/Nodes-4f766d71.js +0 -471
  798. package/Nodes-9aa16d74.js +0 -1
  799. package/animation/AnimationClipCreator.cjs.js +0 -1
  800. package/animation/CCDIKSolver.cjs.js +0 -1
  801. package/animation/MMDAnimationHelper.cjs.js +0 -1
  802. package/animation/MMDPhysics.cjs.js +0 -1
  803. package/cameras/CinematicCamera.cjs.js +0 -1
  804. package/controls/ArcballControls.cjs.js +0 -1
  805. package/controls/DeviceOrientationControls.cjs.js +0 -1
  806. package/controls/DragControls.cjs.js +0 -1
  807. package/controls/FirstPersonControls.cjs.js +0 -1
  808. package/controls/FlyControls.cjs.js +0 -1
  809. package/controls/OrbitControls.cjs.js +0 -1
  810. package/controls/PointerLockControls.cjs.js +0 -1
  811. package/controls/TrackballControls.cjs.js +0 -1
  812. package/controls/TransformControls.cjs.js +0 -1
  813. package/controls/experimental/CameraControls.cjs.js +0 -1
  814. package/csm/CSM.cjs.js +0 -1
  815. package/csm/CSMFrustum.cjs.js +0 -1
  816. package/csm/CSMHelper.cjs.js +0 -1
  817. package/csm/CSMShader.cjs.js +0 -1
  818. package/curves/CurveExtras.cjs.js +0 -1
  819. package/curves/NURBSCurve.cjs.js +0 -1
  820. package/curves/NURBSSurface.cjs.js +0 -1
  821. package/curves/NURBSUtils.cjs.js +0 -1
  822. package/custom.d.cjs.js +0 -1
  823. package/deprecated/Geometry.cjs.js +0 -1
  824. package/effects/AnaglyphEffect.cjs.js +0 -1
  825. package/effects/AsciiEffect.cjs.js +0 -1
  826. package/effects/OutlineEffect.cjs.js +0 -1
  827. package/effects/ParallaxBarrierEffect.cjs.js +0 -1
  828. package/effects/PeppersGhostEffect.cjs.js +0 -1
  829. package/effects/StereoEffect.cjs.js +0 -1
  830. package/environments/RoomEnvironment.cjs.js +0 -1
  831. package/exporters/ColladaExporter.cjs.js +0 -1
  832. package/exporters/DRACOExporter.cjs.js +0 -1
  833. package/exporters/GLTFExporter.cjs.js +0 -1
  834. package/exporters/MMDExporter.cjs.js +0 -1
  835. package/exporters/OBJExporter.cjs.js +0 -1
  836. package/exporters/PLYExporter.cjs.js +0 -1
  837. package/exporters/STLExporter.cjs.js +0 -1
  838. package/exporters/USDZExporter.cjs.js +0 -1
  839. package/geometries/BoxLineGeometry.cjs.js +0 -1
  840. package/geometries/ConvexGeometry.cjs.js +0 -1
  841. package/geometries/DecalGeometry.cjs.js +0 -1
  842. package/geometries/LightningStrike.cjs.js +0 -1
  843. package/geometries/ParametricGeometries.cjs.js +0 -1
  844. package/geometries/ParametricGeometry.cjs.js +0 -1
  845. package/geometries/RoundedBoxGeometry.cjs.js +0 -1
  846. package/geometries/TeapotGeometry.cjs.js +0 -1
  847. package/geometries/TextGeometry.cjs.js +0 -1
  848. package/helpers/LightProbeHelper.cjs.js +0 -1
  849. package/helpers/PositionalAudioHelper.cjs.js +0 -1
  850. package/helpers/RectAreaLightHelper.cjs.js +0 -1
  851. package/helpers/VertexNormalsHelper.cjs.js +0 -1
  852. package/helpers/VertexTangentsHelper.cjs.js +0 -1
  853. package/index.cjs.js +0 -1
  854. package/interactive/InteractiveGroup.cjs.js +0 -1
  855. package/interactive/InteractiveGroup.d.ts +0 -5
  856. package/interactive/InteractiveGroup.js +0 -87
  857. package/interactive/SelectionBox.cjs.js +0 -1
  858. package/interactive/SelectionHelper.cjs.js +0 -1
  859. package/libs/MeshoptDecoder.cjs.js +0 -1
  860. package/libs/MotionControllers.cjs.js +0 -1
  861. package/lights/LightProbeGenerator.cjs.js +0 -1
  862. package/lights/RectAreaLightUniformsLib.cjs.js +0 -1
  863. package/lines/Line2.cjs.js +0 -1
  864. package/lines/LineGeometry.cjs.js +0 -1
  865. package/lines/LineMaterial.cjs.js +0 -1
  866. package/lines/LineSegments2.cjs.js +0 -1
  867. package/lines/LineSegmentsGeometry.cjs.js +0 -1
  868. package/lines/Wireframe.cjs.js +0 -1
  869. package/lines/WireframeGeometry2.cjs.js +0 -1
  870. package/loaders/3DMLoader.cjs.js +0 -1
  871. package/loaders/3MFLoader.cjs.js +0 -1
  872. package/loaders/AMFLoader.cjs.js +0 -1
  873. package/loaders/AssimpLoader.cjs.js +0 -1
  874. package/loaders/BVHLoader.cjs.js +0 -1
  875. package/loaders/BasisTextureLoader.cjs.js +0 -1
  876. package/loaders/ColladaLoader.cjs.js +0 -1
  877. package/loaders/DDSLoader.cjs.js +0 -1
  878. package/loaders/DRACOLoader.cjs.js +0 -1
  879. package/loaders/EXRLoader.cjs.js +0 -1
  880. package/loaders/FBXLoader.cjs.js +0 -1
  881. package/loaders/FontLoader.cjs.js +0 -1
  882. package/loaders/GCodeLoader.cjs.js +0 -1
  883. package/loaders/GLTFLoader.cjs.js +0 -1
  884. package/loaders/HDRCubeTextureLoader.cjs.js +0 -1
  885. package/loaders/KMZLoader.cjs.js +0 -1
  886. package/loaders/KTX2Loader.cjs.js +0 -1
  887. package/loaders/KTXLoader.cjs.js +0 -1
  888. package/loaders/LDrawLoader.cjs.js +0 -1
  889. package/loaders/LUT3dlLoader.cjs.js +0 -1
  890. package/loaders/LUTCubeLoader.cjs.js +0 -1
  891. package/loaders/LWOLoader.cjs.js +0 -1
  892. package/loaders/LottieLoader.cjs.js +0 -1
  893. package/loaders/MD2Loader.cjs.js +0 -1
  894. package/loaders/MDDLoader.cjs.js +0 -1
  895. package/loaders/MMDLoader.cjs.js +0 -1
  896. package/loaders/MTLLoader.cjs.js +0 -1
  897. package/loaders/NRRDLoader.cjs.js +0 -1
  898. package/loaders/NodeMaterialLoader.cjs.js +0 -1
  899. package/loaders/OBJLoader.cjs.js +0 -1
  900. package/loaders/PCDLoader.cjs.js +0 -1
  901. package/loaders/PDBLoader.cjs.js +0 -1
  902. package/loaders/PLYLoader.cjs.js +0 -1
  903. package/loaders/PRWMLoader.cjs.js +0 -1
  904. package/loaders/PVRLoader.cjs.js +0 -1
  905. package/loaders/RGBELoader.cjs.js +0 -1
  906. package/loaders/RGBMLoader.cjs.js +0 -1
  907. package/loaders/STLLoader.cjs.js +0 -1
  908. package/loaders/SVGLoader.cjs.js +0 -1
  909. package/loaders/TDSLoader.cjs.js +0 -1
  910. package/loaders/TGALoader.cjs.js +0 -1
  911. package/loaders/TTFLoader.cjs.js +0 -1
  912. package/loaders/TiltLoader.cjs.js +0 -1
  913. package/loaders/VOXLoader.cjs.js +0 -1
  914. package/loaders/VRMLLoader.cjs.js +0 -1
  915. package/loaders/VRMLoader.cjs.js +0 -1
  916. package/loaders/VTKLoader.cjs.js +0 -1
  917. package/loaders/XLoader.cjs.js +0 -1
  918. package/loaders/XYZLoader.cjs.js +0 -1
  919. package/loaders/lwo/IFFParser.cjs.js +0 -1
  920. package/loaders/lwo/LWO2Parser.cjs.js +0 -1
  921. package/loaders/lwo/LWO3Parser.cjs.js +0 -1
  922. package/math/Capsule.cjs.js +0 -1
  923. package/math/ColorConverter.cjs.js +0 -1
  924. package/math/ConvexHull.cjs.js +0 -1
  925. package/math/ImprovedNoise.cjs.js +0 -1
  926. package/math/Lut.cjs.js +0 -1
  927. package/math/MeshSurfaceSampler.cjs.js +0 -1
  928. package/math/OBB.cjs.js +0 -1
  929. package/math/Octree.cjs.js +0 -1
  930. package/math/SimplexNoise.cjs.js +0 -1
  931. package/misc/ConvexObjectBreaker.cjs.js +0 -1
  932. package/misc/GPUComputationRenderer.cjs.js +0 -1
  933. package/misc/Gyroscope.cjs.js +0 -1
  934. package/misc/MD2Character.cjs.js +0 -1
  935. package/misc/MD2CharacterComplex.cjs.js +0 -1
  936. package/misc/MorphAnimMesh.cjs.js +0 -1
  937. package/misc/MorphBlendMesh.cjs.js +0 -1
  938. package/misc/ProgressiveLightmap.cjs.js +0 -1
  939. package/misc/RollerCoaster.cjs.js +0 -1
  940. package/misc/TubePainter.cjs.js +0 -1
  941. package/misc/Volume.cjs.js +0 -1
  942. package/misc/VolumeSlice.cjs.js +0 -1
  943. package/misc/WebGL.cjs.js +0 -1
  944. package/modifiers/CurveModifier.cjs.js +0 -1
  945. package/modifiers/EdgeSplitModifier.cjs.js +0 -1
  946. package/modifiers/SimplifyModifier.cjs.js +0 -1
  947. package/modifiers/TessellateModifier.cjs.js +0 -1
  948. package/nodes/Nodes.cjs.js +0 -1
  949. package/nodes/ShaderNode.cjs.js +0 -1
  950. package/nodes/accessors/BufferNode.cjs.js +0 -1
  951. package/nodes/accessors/CameraNode.cjs.js +0 -1
  952. package/nodes/accessors/CubeTextureNode.cjs.js +0 -1
  953. package/nodes/accessors/MaterialNode.cjs.js +0 -1
  954. package/nodes/accessors/MaterialReferenceNode.cjs.js +0 -1
  955. package/nodes/accessors/ModelNode.cjs.js +0 -1
  956. package/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  957. package/nodes/accessors/NormalNode.cjs.js +0 -1
  958. package/nodes/accessors/Object3DNode.cjs.js +0 -1
  959. package/nodes/accessors/PointUVNode.cjs.js +0 -1
  960. package/nodes/accessors/PositionNode.cjs.js +0 -1
  961. package/nodes/accessors/ReferenceNode.cjs.js +0 -1
  962. package/nodes/accessors/ReflectNode.cjs.js +0 -1
  963. package/nodes/accessors/SkinningNode.cjs.js +0 -1
  964. package/nodes/accessors/TextureNode.cjs.js +0 -1
  965. package/nodes/accessors/UVNode.cjs.js +0 -1
  966. package/nodes/core/ArrayUniformNode.cjs.js +0 -1
  967. package/nodes/core/AttributeNode.cjs.js +0 -1
  968. package/nodes/core/BypassNode.cjs.js +0 -1
  969. package/nodes/core/CodeNode.cjs.js +0 -1
  970. package/nodes/core/ConstNode.cjs.js +0 -1
  971. package/nodes/core/ContextNode.cjs.js +0 -1
  972. package/nodes/core/ExpressionNode.cjs.js +0 -1
  973. package/nodes/core/FunctionCallNode.cjs.js +0 -1
  974. package/nodes/core/FunctionNode.cjs.js +0 -1
  975. package/nodes/core/InputNode.cjs.js +0 -1
  976. package/nodes/core/Node.cjs.js +0 -1
  977. package/nodes/core/NodeAttribute.cjs.js +0 -1
  978. package/nodes/core/NodeBuilder.cjs.js +0 -1
  979. package/nodes/core/NodeCode.cjs.js +0 -1
  980. package/nodes/core/NodeFrame.cjs.js +0 -1
  981. package/nodes/core/NodeFunction.cjs.js +0 -1
  982. package/nodes/core/NodeFunction.js +0 -17
  983. package/nodes/core/NodeFunctionInput.cjs.js +0 -1
  984. package/nodes/core/NodeKeywords.cjs.js +0 -1
  985. package/nodes/core/NodeParser.cjs.js +0 -1
  986. package/nodes/core/NodeParser.js +0 -8
  987. package/nodes/core/NodeUniform.cjs.js +0 -1
  988. package/nodes/core/NodeUtils.cjs.js +0 -1
  989. package/nodes/core/NodeVar.cjs.js +0 -1
  990. package/nodes/core/NodeVary.cjs.js +0 -1
  991. package/nodes/core/PropertyNode.cjs.js +0 -1
  992. package/nodes/core/TempNode.cjs.js +0 -1
  993. package/nodes/core/UniformNode.cjs.js +0 -1
  994. package/nodes/core/VarNode.cjs.js +0 -1
  995. package/nodes/core/VaryNode.cjs.js +0 -1
  996. package/nodes/core/constants.cjs.js +0 -1
  997. package/nodes/display/ColorSpaceNode.cjs.js +0 -1
  998. package/nodes/display/NormalMapNode.cjs.js +0 -1
  999. package/nodes/fog/FogNode.cjs.js +0 -1
  1000. package/nodes/fog/FogRangeNode.cjs.js +0 -1
  1001. package/nodes/functions/BSDFs.cjs.js +0 -1
  1002. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +0 -1
  1003. package/nodes/functions/PhysicalMaterialFunctions.js +0 -57
  1004. package/nodes/lights/LightContextNode.cjs.js +0 -1
  1005. package/nodes/lights/LightNode.cjs.js +0 -1
  1006. package/nodes/lights/LightsNode.cjs.js +0 -1
  1007. package/nodes/loaders/NodeLoader.cjs.js +0 -1
  1008. package/nodes/loaders/NodeMaterialLoader.cjs.js +0 -1
  1009. package/nodes/loaders/NodeObjectLoader.cjs.js +0 -1
  1010. package/nodes/materials/LineBasicNodeMaterial.cjs.js +0 -1
  1011. package/nodes/materials/Materials.cjs.js +0 -1
  1012. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +0 -1
  1013. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +0 -1
  1014. package/nodes/materials/NodeMaterial.cjs.js +0 -1
  1015. package/nodes/materials/PointsNodeMaterial.cjs.js +0 -1
  1016. package/nodes/math/CondNode.cjs.js +0 -1
  1017. package/nodes/math/MathNode.cjs.js +0 -1
  1018. package/nodes/math/OperatorNode.cjs.js +0 -1
  1019. package/nodes/parsers/GLSLNodeFunction.cjs.js +0 -1
  1020. package/nodes/parsers/GLSLNodeFunction.js +0 -101
  1021. package/nodes/parsers/GLSLNodeParser.cjs.js +0 -1
  1022. package/nodes/parsers/GLSLNodeParser.js +0 -13
  1023. package/nodes/parsers/WGSLNodeFunction.cjs.js +0 -1
  1024. package/nodes/parsers/WGSLNodeFunction.js +0 -71
  1025. package/nodes/parsers/WGSLNodeParser.cjs.js +0 -1
  1026. package/nodes/parsers/WGSLNodeParser.js +0 -13
  1027. package/nodes/procedural/CheckerNode.cjs.js +0 -1
  1028. package/nodes/utils/ArrayElementNode.cjs.js +0 -1
  1029. package/nodes/utils/ConvertNode.cjs.js +0 -1
  1030. package/nodes/utils/JoinNode.cjs.js +0 -1
  1031. package/nodes/utils/MatcapUVNode.cjs.js +0 -1
  1032. package/nodes/utils/OscNode.cjs.js +0 -1
  1033. package/nodes/utils/SplitNode.cjs.js +0 -1
  1034. package/nodes/utils/SpriteSheetUVNode.cjs.js +0 -1
  1035. package/nodes/utils/TimerNode.cjs.js +0 -1
  1036. package/objects/GroundProjectedEnv.cjs.js +0 -1
  1037. package/objects/Lensflare.cjs.js +0 -1
  1038. package/objects/LightningStorm.cjs.js +0 -1
  1039. package/objects/MarchingCubes.cjs.js +0 -1
  1040. package/objects/Reflector.cjs.js +0 -1
  1041. package/objects/ReflectorForSSRPass.cjs.js +0 -1
  1042. package/objects/ReflectorRTT.cjs.js +0 -1
  1043. package/objects/Refractor.cjs.js +0 -1
  1044. package/objects/ShadowMesh.cjs.js +0 -1
  1045. package/objects/Sky.cjs.js +0 -1
  1046. package/objects/Water.cjs.js +0 -1
  1047. package/objects/Water2.cjs.js +0 -1
  1048. package/offscreen/jank.cjs.js +0 -1
  1049. package/offscreen/offscreen.cjs.js +0 -1
  1050. package/offscreen/scene.cjs.js +0 -1
  1051. package/physics/AmmoPhysics.cjs.js +0 -1
  1052. package/postprocessing/AdaptiveToneMappingPass.cjs.js +0 -1
  1053. package/postprocessing/AfterimagePass.cjs.js +0 -1
  1054. package/postprocessing/BloomPass.cjs.js +0 -1
  1055. package/postprocessing/BokehPass.cjs.js +0 -1
  1056. package/postprocessing/ClearPass.cjs.js +0 -1
  1057. package/postprocessing/CubeTexturePass.cjs.js +0 -1
  1058. package/postprocessing/DotScreenPass.cjs.js +0 -1
  1059. package/postprocessing/EffectComposer.cjs.js +0 -1
  1060. package/postprocessing/FilmPass.cjs.js +0 -1
  1061. package/postprocessing/GlitchPass.cjs.js +0 -1
  1062. package/postprocessing/HalftonePass.cjs.js +0 -1
  1063. package/postprocessing/LUTPass.cjs.js +0 -1
  1064. package/postprocessing/MaskPass.cjs.js +0 -1
  1065. package/postprocessing/OutlinePass.cjs.js +0 -1
  1066. package/postprocessing/Pass.cjs.js +0 -1
  1067. package/postprocessing/RenderPass.cjs.js +0 -1
  1068. package/postprocessing/RenderPixelatedPass.cjs.js +0 -1
  1069. package/postprocessing/SAOPass.cjs.js +0 -1
  1070. package/postprocessing/SMAAPass.cjs.js +0 -1
  1071. package/postprocessing/SSAARenderPass.cjs.js +0 -1
  1072. package/postprocessing/SSAOPass.cjs.js +0 -1
  1073. package/postprocessing/SSRPass.cjs.js +0 -1
  1074. package/postprocessing/SavePass.cjs.js +0 -1
  1075. package/postprocessing/ShaderPass.cjs.js +0 -1
  1076. package/postprocessing/TAARenderPass.cjs.js +0 -1
  1077. package/postprocessing/TexturePass.cjs.js +0 -1
  1078. package/postprocessing/UnrealBloomPass.cjs.js +0 -1
  1079. package/renderers/CSS2DRenderer.cjs.js +0 -1
  1080. package/renderers/CSS3DRenderer.cjs.js +0 -1
  1081. package/renderers/Projector.cjs.js +0 -1
  1082. package/renderers/SVGRenderer.cjs.js +0 -1
  1083. package/renderers/nodes/accessors/CameraNode.cjs.js +0 -1
  1084. package/renderers/nodes/accessors/ModelNode.cjs.js +0 -1
  1085. package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  1086. package/renderers/nodes/accessors/NormalNode.cjs.js +0 -1
  1087. package/renderers/nodes/accessors/PositionNode.cjs.js +0 -1
  1088. package/renderers/nodes/accessors/UVNode.cjs.js +0 -1
  1089. package/renderers/nodes/core/AttributeNode.cjs.js +0 -1
  1090. package/renderers/nodes/core/InputNode.cjs.js +0 -1
  1091. package/renderers/nodes/core/Node.cjs.js +0 -1
  1092. package/renderers/nodes/core/NodeAttribute.cjs.js +0 -1
  1093. package/renderers/nodes/core/NodeBuilder.cjs.js +0 -1
  1094. package/renderers/nodes/core/NodeFrame.cjs.js +0 -1
  1095. package/renderers/nodes/core/NodeSlot.cjs.js +0 -1
  1096. package/renderers/nodes/core/NodeUniform.cjs.js +0 -1
  1097. package/renderers/nodes/core/NodeVary.cjs.js +0 -1
  1098. package/renderers/nodes/core/VaryNode.cjs.js +0 -1
  1099. package/renderers/nodes/core/constants.cjs.js +0 -1
  1100. package/renderers/nodes/inputs/ColorNode.cjs.js +0 -1
  1101. package/renderers/nodes/inputs/FloatNode.cjs.js +0 -1
  1102. package/renderers/nodes/inputs/Matrix3Node.cjs.js +0 -1
  1103. package/renderers/nodes/inputs/Matrix4Node.cjs.js +0 -1
  1104. package/renderers/nodes/inputs/TextureNode.cjs.js +0 -1
  1105. package/renderers/nodes/inputs/Vector2Node.cjs.js +0 -1
  1106. package/renderers/nodes/inputs/Vector3Node.cjs.js +0 -1
  1107. package/renderers/nodes/inputs/Vector4Node.cjs.js +0 -1
  1108. package/renderers/nodes/math/MathNode.cjs.js +0 -1
  1109. package/renderers/nodes/math/OperatorNode.cjs.js +0 -1
  1110. package/renderers/nodes/utils/SwitchNode.cjs.js +0 -1
  1111. package/renderers/nodes/utils/TimerNode.cjs.js +0 -1
  1112. package/renderers/webgpu/WebGPU.cjs.js +0 -1
  1113. package/renderers/webgpu/WebGPUAttributes.cjs.js +0 -1
  1114. package/renderers/webgpu/WebGPUBackground.cjs.js +0 -1
  1115. package/renderers/webgpu/WebGPUBinding.cjs.js +0 -1
  1116. package/renderers/webgpu/WebGPUBindings.cjs.js +0 -1
  1117. package/renderers/webgpu/WebGPUComputePipelines.cjs.js +0 -1
  1118. package/renderers/webgpu/WebGPUGeometries.cjs.js +0 -1
  1119. package/renderers/webgpu/WebGPUInfo.cjs.js +0 -1
  1120. package/renderers/webgpu/WebGPUObjects.cjs.js +0 -1
  1121. package/renderers/webgpu/WebGPUProperties.cjs.js +0 -1
  1122. package/renderers/webgpu/WebGPURenderLists.cjs.js +0 -1
  1123. package/renderers/webgpu/WebGPURenderPipelines.cjs.js +0 -1
  1124. package/renderers/webgpu/WebGPURenderer.cjs.js +0 -1
  1125. package/renderers/webgpu/WebGPUSampledTexture.cjs.js +0 -1
  1126. package/renderers/webgpu/WebGPUSampler.cjs.js +0 -1
  1127. package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +0 -1
  1128. package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +0 -1
  1129. package/renderers/webgpu/WebGPUTextureUtils.cjs.js +0 -1
  1130. package/renderers/webgpu/WebGPUTextures.cjs.js +0 -1
  1131. package/renderers/webgpu/WebGPUUniform.cjs.js +0 -1
  1132. package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +0 -1
  1133. package/renderers/webgpu/constants.cjs.js +0 -1
  1134. package/renderers/webgpu/nodes/ShaderLib.cjs.js +0 -1
  1135. package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +0 -1
  1136. package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +0 -1
  1137. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +0 -1
  1138. package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +0 -1
  1139. package/shaders/ACESFilmicToneMappingShader.cjs.js +0 -1
  1140. package/shaders/AfterimageShader.cjs.js +0 -1
  1141. package/shaders/BasicShader.cjs.js +0 -1
  1142. package/shaders/BleachBypassShader.cjs.js +0 -1
  1143. package/shaders/BlendShader.cjs.js +0 -1
  1144. package/shaders/BokehShader.cjs.js +0 -1
  1145. package/shaders/BokehShader2.cjs.js +0 -1
  1146. package/shaders/BrightnessContrastShader.cjs.js +0 -1
  1147. package/shaders/ColorCorrectionShader.cjs.js +0 -1
  1148. package/shaders/ColorifyShader.cjs.js +0 -1
  1149. package/shaders/ConvolutionShader.cjs.js +0 -1
  1150. package/shaders/CopyShader.cjs.js +0 -1
  1151. package/shaders/DOFMipMapShader.cjs.js +0 -1
  1152. package/shaders/DepthLimitedBlurShader.cjs.js +0 -1
  1153. package/shaders/DigitalGlitch.cjs.js +0 -1
  1154. package/shaders/DotScreenShader.cjs.js +0 -1
  1155. package/shaders/FXAAShader.cjs.js +0 -1
  1156. package/shaders/FilmShader.cjs.js +0 -1
  1157. package/shaders/FocusShader.cjs.js +0 -1
  1158. package/shaders/FreiChenShader.cjs.js +0 -1
  1159. package/shaders/FresnelShader.cjs.js +0 -1
  1160. package/shaders/GammaCorrectionShader.cjs.js +0 -1
  1161. package/shaders/GodRaysShader.cjs.js +0 -1
  1162. package/shaders/HalftoneShader.cjs.js +0 -1
  1163. package/shaders/HorizontalBlurShader.cjs.js +0 -1
  1164. package/shaders/HorizontalTiltShiftShader.cjs.js +0 -1
  1165. package/shaders/HueSaturationShader.cjs.js +0 -1
  1166. package/shaders/KaleidoShader.cjs.js +0 -1
  1167. package/shaders/LuminosityHighPassShader.cjs.js +0 -1
  1168. package/shaders/LuminosityShader.cjs.js +0 -1
  1169. package/shaders/MirrorShader.cjs.js +0 -1
  1170. package/shaders/NormalMapShader.cjs.js +0 -1
  1171. package/shaders/ParallaxShader.cjs.js +0 -1
  1172. package/shaders/PixelShader.cjs.js +0 -1
  1173. package/shaders/RGBShiftShader.cjs.js +0 -1
  1174. package/shaders/SAOShader.cjs.js +0 -1
  1175. package/shaders/SMAAShader.cjs.js +0 -1
  1176. package/shaders/SSAOShader.cjs.js +0 -1
  1177. package/shaders/SSRShader.cjs.js +0 -1
  1178. package/shaders/SepiaShader.cjs.js +0 -1
  1179. package/shaders/SobelOperatorShader.cjs.js +0 -1
  1180. package/shaders/SubsurfaceScatteringShader.cjs.js +0 -1
  1181. package/shaders/TechnicolorShader.cjs.js +0 -1
  1182. package/shaders/ToneMapShader.cjs.js +0 -1
  1183. package/shaders/ToonShader.cjs.js +0 -1
  1184. package/shaders/TriangleBlurShader.cjs.js +0 -1
  1185. package/shaders/UnpackDepthRGBAShader.cjs.js +0 -1
  1186. package/shaders/VerticalBlurShader.cjs.js +0 -1
  1187. package/shaders/VerticalTiltShiftShader.cjs.js +0 -1
  1188. package/shaders/VignetteShader.cjs.js +0 -1
  1189. package/shaders/VolumeShader.cjs.js +0 -1
  1190. package/shaders/WaterRefractionShader.cjs.js +0 -1
  1191. package/shaders/index.cjs.js +0 -1
  1192. package/shaders/index.d.ts +0 -54
  1193. package/shaders/index.js +0 -53
  1194. package/shaders/types.cjs.js +0 -1
  1195. package/textures/FlakesTexture.cjs.js +0 -1
  1196. package/types/helpers.cjs.js +0 -1
  1197. package/types/shared.cjs.js +0 -1
  1198. package/types/shared.js +0 -1
  1199. package/types/utils.cjs.js +0 -1
  1200. package/types/utils.js +0 -1
  1201. package/utils/BufferGeometryUtils.cjs.js +0 -1
  1202. package/utils/GeometryCompressionUtils.cjs.js +0 -1
  1203. package/utils/GeometryUtils.cjs.js +0 -1
  1204. package/utils/LDrawUtils.cjs.js +0 -1
  1205. package/utils/LDrawUtils.d.ts +0 -5
  1206. package/utils/LDrawUtils.js +0 -144
  1207. package/utils/RoughnessMipmapper.cjs.js +0 -1
  1208. package/utils/SceneUtils.cjs.js +0 -1
  1209. package/utils/ShadowMapViewer.cjs.js +0 -1
  1210. package/utils/SkeletonUtils.cjs.js +0 -1
  1211. package/utils/UVsDebug.cjs.js +0 -1
  1212. package/utils/WorkerPool.cjs.js +0 -1
  1213. package/webxr/ARButton.cjs.js +0 -1
  1214. package/webxr/OculusHandModel.cjs.js +0 -1
  1215. package/webxr/OculusHandPointerModel.cjs.js +0 -1
  1216. package/webxr/Text2D.cjs.js +0 -1
  1217. package/webxr/VRButton.cjs.js +0 -1
  1218. package/webxr/XRControllerModelFactory.cjs.js +0 -1
  1219. package/webxr/XREstimatedLight.cjs.js +0 -1
  1220. package/webxr/XRHandMeshModel.cjs.js +0 -1
  1221. package/webxr/XRHandModelFactory.cjs.js +0 -1
  1222. package/webxr/XRHandPrimitiveModel.cjs.js +0 -1
@@ -1,15 +1,12 @@
1
- import { Vector3, Ray, Loader, FileLoader, MeshStandardMaterial, LineBasicMaterial, ShaderMaterial, UniformsUtils, UniformsLib, Color, BufferGeometry, BufferAttribute, LineSegments, Mesh, Matrix4, Group } from 'three';
2
-
3
- // Note: "MATERIAL" tag (e.g. GLITTER, SPECKLE) is not implemented
4
-
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const THREE = require("three");
5
4
  const FINISH_TYPE_DEFAULT = 0;
6
5
  const FINISH_TYPE_CHROME = 1;
7
6
  const FINISH_TYPE_PEARLESCENT = 2;
8
7
  const FINISH_TYPE_RUBBER = 3;
9
8
  const FINISH_TYPE_MATTE_METALLIC = 4;
10
- const FINISH_TYPE_METAL = 5; // State machine to search a subobject path.
11
- // The LDraw standard establishes these various possible subfolders.
12
-
9
+ const FINISH_TYPE_METAL = 5;
13
10
  const FILE_LOCATION_AS_IS = 0;
14
11
  const FILE_LOCATION_TRY_PARTS = 1;
15
12
  const FILE_LOCATION_TRY_P = 2;
@@ -17,27 +14,25 @@ const FILE_LOCATION_TRY_MODELS = 3;
17
14
  const FILE_LOCATION_TRY_RELATIVE = 4;
18
15
  const FILE_LOCATION_TRY_ABSOLUTE = 5;
19
16
  const FILE_LOCATION_NOT_FOUND = 6;
20
- const MAIN_COLOUR_CODE = '16';
21
- const MAIN_EDGE_COLOUR_CODE = '24';
22
-
23
- const _tempVec0 = new Vector3();
24
-
25
- const _tempVec1 = new Vector3();
26
-
27
- class LDrawConditionalLineMaterial extends ShaderMaterial {
17
+ const MAIN_COLOUR_CODE = "16";
18
+ const MAIN_EDGE_COLOUR_CODE = "24";
19
+ const _tempVec0 = new THREE.Vector3();
20
+ const _tempVec1 = new THREE.Vector3();
21
+ class LDrawConditionalLineMaterial extends THREE.ShaderMaterial {
28
22
  constructor(parameters) {
29
23
  super({
30
- uniforms: UniformsUtils.merge([UniformsLib.fog, {
31
- diffuse: {
32
- value: new Color()
33
- },
34
- opacity: {
35
- value: 1.0
24
+ uniforms: THREE.UniformsUtils.merge([
25
+ THREE.UniformsLib.fog,
26
+ {
27
+ diffuse: {
28
+ value: new THREE.Color()
29
+ },
30
+ opacity: {
31
+ value: 1
32
+ }
36
33
  }
37
- }]),
38
- vertexShader:
39
- /* glsl */
40
- `
34
+ ]),
35
+ vertexShader: `
41
36
  attribute vec3 control0;
42
37
  attribute vec3 control1;
43
38
  attribute vec3 direction;
@@ -85,9 +80,7 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
85
80
  #include <fog_vertex>
86
81
  }
87
82
  `,
88
- fragmentShader:
89
- /* glsl */
90
- `
83
+ fragmentShader: `
91
84
  uniform vec3 diffuse;
92
85
  uniform float opacity;
93
86
  varying float discardFlag;
@@ -117,15 +110,15 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
117
110
  });
118
111
  Object.defineProperties(this, {
119
112
  opacity: {
120
- get: function () {
113
+ get: function() {
121
114
  return this.uniforms.opacity.value;
122
115
  },
123
- set: function (value) {
116
+ set: function(value) {
124
117
  this.uniforms.opacity.value = value;
125
118
  }
126
119
  },
127
120
  color: {
128
- get: function () {
121
+ get: function() {
129
122
  return this.uniforms.diffuse.value;
130
123
  }
131
124
  }
@@ -133,17 +126,13 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
133
126
  this.setValues(parameters);
134
127
  this.isLDrawConditionalLineMaterial = true;
135
128
  }
136
-
137
129
  }
138
-
139
- class ConditionalLineSegments extends LineSegments {
130
+ class ConditionalLineSegments extends THREE.LineSegments {
140
131
  constructor(geometry, material) {
141
132
  super(geometry, material);
142
133
  this.isConditionalLine = true;
143
134
  }
144
-
145
135
  }
146
-
147
136
  function generateFaceNormals(faces) {
148
137
  for (let i = 0, l = faces.length; i < l; i++) {
149
138
  const face = faces[i];
@@ -151,263 +140,179 @@ function generateFaceNormals(faces) {
151
140
  const v0 = vertices[0];
152
141
  const v1 = vertices[1];
153
142
  const v2 = vertices[2];
154
-
155
143
  _tempVec0.subVectors(v1, v0);
156
-
157
144
  _tempVec1.subVectors(v2, v1);
158
-
159
- face.faceNormal = new Vector3().crossVectors(_tempVec0, _tempVec1).normalize();
145
+ face.faceNormal = new THREE.Vector3().crossVectors(_tempVec0, _tempVec1).normalize();
160
146
  }
161
147
  }
162
-
163
- const _ray = new Ray();
164
-
148
+ const _ray = new THREE.Ray();
165
149
  function smoothNormals(faces, lineSegments, checkSubSegments = false) {
166
- // NOTE: 1e2 is pretty coarse but was chosen to quantize the resulting value because
167
- // it allows edges to be smoothed as expected (see minifig arms).
168
- // --
169
- // And the vector values are initialize multiplied by 1 + 1e-10 to account for floating
170
- // point errors on vertices along quantization boundaries. Ie after matrix multiplication
171
- // vertices that should be merged might be set to "1.7" and "1.6999..." meaning they won't
172
- // get merged. This added epsilon attempts to push these error values to the same quantized
173
- // value for the sake of hashing. See "AT-ST mini" dishes. See mrdoob/three#23169.
174
- const hashMultiplier = (1 + 1e-10) * 1e2;
175
-
150
+ const hashMultiplier = (1 + 1e-10) * 100;
176
151
  function hashVertex(v) {
177
152
  const x = ~~(v.x * hashMultiplier);
178
153
  const y = ~~(v.y * hashMultiplier);
179
154
  const z = ~~(v.z * hashMultiplier);
180
155
  return `${x},${y},${z}`;
181
156
  }
182
-
183
157
  function hashEdge(v0, v1) {
184
158
  return `${hashVertex(v0)}_${hashVertex(v1)}`;
185
- } // converts the two vertices to a ray with a normalized direction and origin of 0, 0, 0 projected
186
- // onto the original line.
187
-
188
-
159
+ }
189
160
  function toNormalizedRay(v0, v1, targetRay) {
190
161
  targetRay.direction.subVectors(v1, v0).normalize();
191
162
  const scalar = v0.dot(targetRay.direction);
192
163
  targetRay.origin.copy(v0).addScaledVector(targetRay.direction, -scalar);
193
164
  return targetRay;
194
165
  }
195
-
196
166
  function hashRay(ray) {
197
167
  return hashEdge(ray.origin, ray.direction);
198
168
  }
199
-
200
- const hardEdges = new Set();
201
- const hardEdgeRays = new Map();
169
+ const hardEdges = /* @__PURE__ */ new Set();
170
+ const hardEdgeRays = /* @__PURE__ */ new Map();
202
171
  const halfEdgeList = {};
203
- const normals = []; // Save the list of hard edges by hash
204
-
172
+ const normals = [];
205
173
  for (let i = 0, l = lineSegments.length; i < l; i++) {
206
174
  const ls = lineSegments[i];
207
175
  const vertices = ls.vertices;
208
176
  const v0 = vertices[0];
209
177
  const v1 = vertices[1];
210
178
  hardEdges.add(hashEdge(v0, v1));
211
- hardEdges.add(hashEdge(v1, v0)); // only generate the hard edge ray map if we're checking subsegments because it's more expensive to check
212
- // and requires more memory.
213
-
179
+ hardEdges.add(hashEdge(v1, v0));
214
180
  if (checkSubSegments) {
215
- // add both ray directions to the map
216
- const ray = toNormalizedRay(v0, v1, new Ray());
181
+ const ray = toNormalizedRay(v0, v1, new THREE.Ray());
217
182
  const rh1 = hashRay(ray);
218
-
219
183
  if (!hardEdgeRays.has(rh1)) {
220
184
  toNormalizedRay(v1, v0, ray);
221
185
  const rh2 = hashRay(ray);
222
- const info = {
186
+ const info2 = {
223
187
  ray,
224
188
  distances: []
225
189
  };
226
- hardEdgeRays.set(rh1, info);
227
- hardEdgeRays.set(rh2, info);
228
- } // store both segments ends in min, max order in the distances array to check if a face edge is a
229
- // subsegment later.
230
-
231
-
190
+ hardEdgeRays.set(rh1, info2);
191
+ hardEdgeRays.set(rh2, info2);
192
+ }
232
193
  const info = hardEdgeRays.get(rh1);
233
194
  let d0 = info.ray.direction.dot(v0);
234
195
  let d1 = info.ray.direction.dot(v1);
235
-
236
196
  if (d0 > d1) {
197
+ ;
237
198
  [d0, d1] = [d1, d0];
238
199
  }
239
-
240
200
  info.distances.push(d0, d1);
241
201
  }
242
- } // track the half edges associated with each triangle
243
-
244
-
202
+ }
245
203
  for (let i = 0, l = faces.length; i < l; i++) {
246
204
  const tri = faces[i];
247
205
  const vertices = tri.vertices;
248
206
  const vertCount = vertices.length;
249
-
250
207
  for (let i2 = 0; i2 < vertCount; i2++) {
251
208
  const index = i2;
252
209
  const next = (i2 + 1) % vertCount;
253
210
  const v0 = vertices[index];
254
211
  const v1 = vertices[next];
255
- const hash = hashEdge(v0, v1); // don't add the triangle if the edge is supposed to be hard
256
-
212
+ const hash = hashEdge(v0, v1);
257
213
  if (hardEdges.has(hash)) {
258
214
  continue;
259
- } // if checking subsegments then check to see if this edge lies on a hard edge ray and whether its within any ray bounds
260
-
261
-
215
+ }
262
216
  if (checkSubSegments) {
263
217
  toNormalizedRay(v0, v1, _ray);
264
218
  const rayHash = hashRay(_ray);
265
-
266
219
  if (hardEdgeRays.has(rayHash)) {
267
- const info = hardEdgeRays.get(rayHash);
268
- const {
269
- ray,
270
- distances
271
- } = info;
220
+ const info2 = hardEdgeRays.get(rayHash);
221
+ const { ray, distances } = info2;
272
222
  let d0 = ray.direction.dot(v0);
273
223
  let d1 = ray.direction.dot(v1);
274
-
275
224
  if (d0 > d1) {
225
+ ;
276
226
  [d0, d1] = [d1, d0];
277
- } // return early if the face edge is found to be a subsegment of a line edge meaning the edge will have "hard" normals
278
-
279
-
227
+ }
280
228
  let found = false;
281
-
282
- for (let i = 0, l = distances.length; i < l; i += 2) {
283
- if (d0 >= distances[i] && d1 <= distances[i + 1]) {
229
+ for (let i3 = 0, l2 = distances.length; i3 < l2; i3 += 2) {
230
+ if (d0 >= distances[i3] && d1 <= distances[i3 + 1]) {
284
231
  found = true;
285
232
  break;
286
233
  }
287
234
  }
288
-
289
235
  if (found) {
290
236
  continue;
291
237
  }
292
238
  }
293
239
  }
294
-
295
240
  const info = {
296
- index: index,
297
- tri: tri
241
+ index,
242
+ tri
298
243
  };
299
244
  halfEdgeList[hash] = info;
300
245
  }
301
- } // Iterate until we've tried to connect all faces to share normals
302
-
303
-
246
+ }
304
247
  while (true) {
305
- // Stop if there are no more faces left
306
248
  let halfEdge = null;
307
-
308
249
  for (const key in halfEdgeList) {
309
250
  halfEdge = halfEdgeList[key];
310
251
  break;
311
252
  }
312
-
313
253
  if (halfEdge === null) {
314
254
  break;
315
- } // Exhaustively find all connected faces
316
-
317
-
255
+ }
318
256
  const queue = [halfEdge];
319
-
320
257
  while (queue.length > 0) {
321
- // initialize all vertex normals in this triangle
322
258
  const tri = queue.pop().tri;
323
259
  const vertices = tri.vertices;
324
260
  const vertNormals = tri.normals;
325
- const faceNormal = tri.faceNormal; // Check if any edge is connected to another triangle edge
326
-
261
+ const faceNormal = tri.faceNormal;
327
262
  const vertCount = vertices.length;
328
-
329
263
  for (let i2 = 0; i2 < vertCount; i2++) {
330
264
  const index = i2;
331
265
  const next = (i2 + 1) % vertCount;
332
266
  const v0 = vertices[index];
333
- const v1 = vertices[next]; // delete this triangle from the list so it won't be found again
334
-
267
+ const v1 = vertices[next];
335
268
  const hash = hashEdge(v0, v1);
336
269
  delete halfEdgeList[hash];
337
270
  const reverseHash = hashEdge(v1, v0);
338
271
  const otherInfo = halfEdgeList[reverseHash];
339
-
340
272
  if (otherInfo) {
341
273
  const otherTri = otherInfo.tri;
342
274
  const otherIndex = otherInfo.index;
343
275
  const otherNormals = otherTri.normals;
344
276
  const otherVertCount = otherNormals.length;
345
- const otherFaceNormal = otherTri.faceNormal; // NOTE: If the angle between faces is > 67.5 degrees then assume it's
346
- // hard edge. There are some cases where the line segments do not line up exactly
347
- // with or span multiple triangle edges (see Lunar Vehicle wheels).
348
-
277
+ const otherFaceNormal = otherTri.faceNormal;
349
278
  if (Math.abs(otherTri.faceNormal.dot(tri.faceNormal)) < 0.25) {
350
279
  continue;
351
- } // if this triangle has already been traversed then it won't be in
352
- // the halfEdgeList. If it has not then add it to the queue and delete
353
- // it so it won't be found again.
354
-
355
-
280
+ }
356
281
  if (reverseHash in halfEdgeList) {
357
282
  queue.push(otherInfo);
358
283
  delete halfEdgeList[reverseHash];
359
- } // share the first normal
360
-
361
-
284
+ }
362
285
  const otherNext = (otherIndex + 1) % otherVertCount;
363
-
364
286
  if (vertNormals[index] && otherNormals[otherNext] && vertNormals[index] !== otherNormals[otherNext]) {
365
287
  otherNormals[otherNext].norm.add(vertNormals[index].norm);
366
288
  vertNormals[index].norm = otherNormals[otherNext].norm;
367
289
  }
368
-
369
290
  let sharedNormal1 = vertNormals[index] || otherNormals[otherNext];
370
-
371
291
  if (sharedNormal1 === null) {
372
- // it's possible to encounter an edge of a triangle that has already been traversed meaning
373
- // both edges already have different normals defined and shared. To work around this we create
374
- // a wrapper object so when those edges are merged the normals can be updated everywhere.
375
- sharedNormal1 = {
376
- norm: new Vector3()
377
- };
292
+ sharedNormal1 = { norm: new THREE.Vector3() };
378
293
  normals.push(sharedNormal1.norm);
379
294
  }
380
-
381
295
  if (vertNormals[index] === null) {
382
296
  vertNormals[index] = sharedNormal1;
383
297
  sharedNormal1.norm.add(faceNormal);
384
298
  }
385
-
386
299
  if (otherNormals[otherNext] === null) {
387
300
  otherNormals[otherNext] = sharedNormal1;
388
301
  sharedNormal1.norm.add(otherFaceNormal);
389
- } // share the second normal
390
-
391
-
302
+ }
392
303
  if (vertNormals[next] && otherNormals[otherIndex] && vertNormals[next] !== otherNormals[otherIndex]) {
393
304
  otherNormals[otherIndex].norm.add(vertNormals[next].norm);
394
305
  vertNormals[next].norm = otherNormals[otherIndex].norm;
395
306
  }
396
-
397
307
  let sharedNormal2 = vertNormals[next] || otherNormals[otherIndex];
398
-
399
308
  if (sharedNormal2 === null) {
400
- sharedNormal2 = {
401
- norm: new Vector3()
402
- };
309
+ sharedNormal2 = { norm: new THREE.Vector3() };
403
310
  normals.push(sharedNormal2.norm);
404
311
  }
405
-
406
312
  if (vertNormals[next] === null) {
407
313
  vertNormals[next] = sharedNormal2;
408
314
  sharedNormal2.norm.add(faceNormal);
409
315
  }
410
-
411
316
  if (otherNormals[otherIndex] === null) {
412
317
  otherNormals[otherIndex] = sharedNormal2;
413
318
  sharedNormal2.norm.add(otherFaceNormal);
@@ -415,119 +320,94 @@ function smoothNormals(faces, lineSegments, checkSubSegments = false) {
415
320
  }
416
321
  }
417
322
  }
418
- } // The normals of each face have been added up so now we average them by normalizing the vector.
419
-
420
-
323
+ }
421
324
  for (let i = 0, l = normals.length; i < l; i++) {
422
325
  normals[i].normalize();
423
326
  }
424
327
  }
425
-
426
328
  function isPartType(type) {
427
- return type === 'Part' || type === 'Unofficial_Part';
329
+ return type === "Part" || type === "Unofficial_Part";
428
330
  }
429
-
430
331
  function isPrimitiveType(type) {
431
- return /primitive/i.test(type) || type === 'Subpart';
332
+ return /primitive/i.test(type) || type === "Subpart";
432
333
  }
433
-
434
334
  class LineParser {
435
335
  constructor(line, lineNumber) {
436
336
  this.line = line;
437
337
  this.lineLength = line.length;
438
338
  this.currentCharIndex = 0;
439
- this.currentChar = ' ';
339
+ this.currentChar = " ";
440
340
  this.lineNumber = lineNumber;
441
341
  }
442
-
443
342
  seekNonSpace() {
444
343
  while (this.currentCharIndex < this.lineLength) {
445
344
  this.currentChar = this.line.charAt(this.currentCharIndex);
446
-
447
- if (this.currentChar !== ' ' && this.currentChar !== '\t') {
345
+ if (this.currentChar !== " " && this.currentChar !== " ") {
448
346
  return;
449
347
  }
450
-
451
348
  this.currentCharIndex++;
452
349
  }
453
350
  }
454
-
455
351
  getToken() {
456
- const pos0 = this.currentCharIndex++; // Seek space
457
-
352
+ const pos0 = this.currentCharIndex++;
458
353
  while (this.currentCharIndex < this.lineLength) {
459
354
  this.currentChar = this.line.charAt(this.currentCharIndex);
460
-
461
- if (this.currentChar === ' ' || this.currentChar === '\t') {
355
+ if (this.currentChar === " " || this.currentChar === " ") {
462
356
  break;
463
357
  }
464
-
465
358
  this.currentCharIndex++;
466
359
  }
467
-
468
360
  const pos1 = this.currentCharIndex;
469
361
  this.seekNonSpace();
470
362
  return this.line.substring(pos0, pos1);
471
363
  }
472
-
473
364
  getVector() {
474
- return new Vector3(parseFloat(this.getToken()), parseFloat(this.getToken()), parseFloat(this.getToken()));
365
+ return new THREE.Vector3(parseFloat(this.getToken()), parseFloat(this.getToken()), parseFloat(this.getToken()));
475
366
  }
476
-
477
367
  getRemainingString() {
478
368
  return this.line.substring(this.currentCharIndex, this.lineLength);
479
369
  }
480
-
481
370
  isAtTheEnd() {
482
371
  return this.currentCharIndex >= this.lineLength;
483
372
  }
484
-
485
373
  setToEnd() {
486
374
  this.currentCharIndex = this.lineLength;
487
375
  }
488
-
489
376
  getLineNumberString() {
490
- return this.lineNumber >= 0 ? ' at line ' + this.lineNumber : '';
377
+ return this.lineNumber >= 0 ? " at line " + this.lineNumber : "";
491
378
  }
492
-
493
- } // Fetches and parses an intermediate representation of LDraw parts files.
494
-
495
-
379
+ }
496
380
  class LDrawParsedCache {
497
381
  constructor(loader) {
498
382
  this.loader = loader;
499
383
  this._cache = {};
500
384
  }
501
-
502
385
  cloneResult(original) {
503
- const result = {}; // vertices are transformed and normals computed before being converted to geometry
504
- // so these pieces must be cloned.
505
-
506
- result.faces = original.faces.map(face => {
386
+ const result = {};
387
+ result.faces = original.faces.map((face) => {
507
388
  return {
508
389
  colorCode: face.colorCode,
509
390
  material: face.material,
510
- vertices: face.vertices.map(v => v.clone()),
391
+ vertices: face.vertices.map((v) => v.clone()),
511
392
  normals: face.normals.map(() => null),
512
393
  faceNormal: null
513
394
  };
514
395
  });
515
- result.conditionalSegments = original.conditionalSegments.map(face => {
396
+ result.conditionalSegments = original.conditionalSegments.map((face) => {
516
397
  return {
517
398
  colorCode: face.colorCode,
518
399
  material: face.material,
519
- vertices: face.vertices.map(v => v.clone()),
520
- controlPoints: face.controlPoints.map(v => v.clone())
400
+ vertices: face.vertices.map((v) => v.clone()),
401
+ controlPoints: face.controlPoints.map((v) => v.clone())
521
402
  };
522
403
  });
523
- result.lineSegments = original.lineSegments.map(face => {
404
+ result.lineSegments = original.lineSegments.map((face) => {
524
405
  return {
525
406
  colorCode: face.colorCode,
526
407
  material: face.material,
527
- vertices: face.vertices.map(v => v.clone())
408
+ vertices: face.vertices.map((v) => v.clone())
528
409
  };
529
- }); // none if this is subsequently modified
530
-
410
+ });
531
411
  result.type = original.type;
532
412
  result.category = original.category;
533
413
  result.keywords = original.keywords;
@@ -538,95 +418,74 @@ class LDrawParsedCache {
538
418
  result.group = null;
539
419
  return result;
540
420
  }
541
-
542
421
  async fetchData(fileName) {
543
422
  let triedLowerCase = false;
544
423
  let locationState = FILE_LOCATION_AS_IS;
545
-
546
424
  while (locationState !== FILE_LOCATION_NOT_FOUND) {
547
425
  let subobjectURL = fileName;
548
-
549
426
  switch (locationState) {
550
427
  case FILE_LOCATION_AS_IS:
551
428
  locationState = locationState + 1;
552
429
  break;
553
-
554
430
  case FILE_LOCATION_TRY_PARTS:
555
- subobjectURL = 'parts/' + subobjectURL;
431
+ subobjectURL = "parts/" + subobjectURL;
556
432
  locationState = locationState + 1;
557
433
  break;
558
-
559
434
  case FILE_LOCATION_TRY_P:
560
- subobjectURL = 'p/' + subobjectURL;
435
+ subobjectURL = "p/" + subobjectURL;
561
436
  locationState = locationState + 1;
562
437
  break;
563
-
564
438
  case FILE_LOCATION_TRY_MODELS:
565
- subobjectURL = 'models/' + subobjectURL;
439
+ subobjectURL = "models/" + subobjectURL;
566
440
  locationState = locationState + 1;
567
441
  break;
568
-
569
442
  case FILE_LOCATION_TRY_RELATIVE:
570
- subobjectURL = fileName.substring(0, fileName.lastIndexOf('/') + 1) + subobjectURL;
443
+ subobjectURL = fileName.substring(0, fileName.lastIndexOf("/") + 1) + subobjectURL;
571
444
  locationState = locationState + 1;
572
445
  break;
573
-
574
446
  case FILE_LOCATION_TRY_ABSOLUTE:
575
447
  if (triedLowerCase) {
576
- // Try absolute path
577
448
  locationState = FILE_LOCATION_NOT_FOUND;
578
449
  } else {
579
- // Next attempt is lower case
580
450
  fileName = fileName.toLowerCase();
581
451
  subobjectURL = fileName;
582
452
  triedLowerCase = true;
583
453
  locationState = FILE_LOCATION_AS_IS;
584
454
  }
585
-
586
455
  break;
587
456
  }
588
-
589
457
  const loader = this.loader;
590
- const fileLoader = new FileLoader(loader.manager);
458
+ const fileLoader = new THREE.FileLoader(loader.manager);
591
459
  fileLoader.setPath(loader.partsLibraryPath);
592
460
  fileLoader.setRequestHeader(loader.requestHeader);
593
461
  fileLoader.setWithCredentials(loader.withCredentials);
594
-
595
462
  try {
596
463
  const text = await fileLoader.loadAsync(subobjectURL);
597
464
  return text;
598
- } catch {
465
+ } catch (e) {
599
466
  continue;
600
467
  }
601
468
  }
602
-
603
469
  throw new Error('LDrawLoader: Subobject "' + fileName + '" could not be loaded.');
604
470
  }
605
-
606
471
  parse(text, fileName = null) {
607
- const loader = this.loader; // final results
608
-
472
+ const loader = this.loader;
609
473
  const faces = [];
610
474
  const lineSegments = [];
611
475
  const conditionalSegments = [];
612
476
  const subobjects = [];
613
477
  const materials = {};
614
-
615
- const getLocalMaterial = colorCode => {
478
+ const getLocalMaterial = (colorCode) => {
616
479
  return materials[colorCode] || null;
617
480
  };
618
-
619
- let type = 'Model';
481
+ let type = "Model";
620
482
  let category = null;
621
483
  let keywords = null;
622
- let totalFaces = 0; // split into lines
623
-
624
- if (text.indexOf('\r\n') !== -1) {
625
- // This is faster than String.split with regex that splits on both
626
- text = text.replace(/\r\n/g, '\n');
484
+ let totalFaces = 0;
485
+ if (text.indexOf("\r\n") !== -1) {
486
+ text = text.replace(/\r\n/g, "\n");
627
487
  }
628
-
629
- const lines = text.split('\n');
488
+ const lines = text.split("\n");
630
489
  const numLines = lines.length;
631
490
  let parsingEmbeddedFiles = false;
632
491
  let currentEmbeddedFileName = null;
@@ -635,35 +494,26 @@ class LDrawParsedCache {
635
494
  let bfcCCW = true;
636
495
  let bfcInverted = false;
637
496
  let bfcCull = true;
638
- let startingConstructionStep = false; // Parse all line commands
639
-
497
+ let startingConstructionStep = false;
640
498
  for (let lineIndex = 0; lineIndex < numLines; lineIndex++) {
641
499
  const line = lines[lineIndex];
642
- if (line.length === 0) continue;
643
-
500
+ if (line.length === 0)
501
+ continue;
644
502
  if (parsingEmbeddedFiles) {
645
- if (line.startsWith('0 FILE ')) {
646
- // Save previous embedded file in the cache
647
- this.setData(currentEmbeddedFileName, currentEmbeddedText); // New embedded text file
648
-
503
+ if (line.startsWith("0 FILE ")) {
504
+ this.setData(currentEmbeddedFileName, currentEmbeddedText);
649
505
  currentEmbeddedFileName = line.substring(7);
650
- currentEmbeddedText = '';
506
+ currentEmbeddedText = "";
651
507
  } else {
652
- currentEmbeddedText += line + '\n';
508
+ currentEmbeddedText += line + "\n";
653
509
  }
654
-
655
510
  continue;
656
511
  }
657
-
658
512
  const lp = new LineParser(line, lineIndex + 1);
659
513
  lp.seekNonSpace();
660
-
661
514
  if (lp.isAtTheEnd()) {
662
- // Empty line
663
515
  continue;
664
- } // Parse the line type
665
-
666
-
516
+ }
667
517
  const lineType = lp.getToken();
668
518
  let material;
669
519
  let colorCode;
@@ -671,105 +521,80 @@ class LDrawParsedCache {
671
521
  let ccw;
672
522
  let doubleSided;
673
523
  let v0, v1, v2, v3, c0, c1;
674
-
675
524
  switch (lineType) {
676
- // Line type 0: Comment or META
677
- case '0':
678
- // Parse meta directive
525
+ case "0":
679
526
  const meta = lp.getToken();
680
-
681
527
  if (meta) {
682
528
  switch (meta) {
683
- case '!LDRAW_ORG':
529
+ case "!LDRAW_ORG":
684
530
  type = lp.getToken();
685
531
  break;
686
-
687
- case '!COLOUR':
532
+ case "!COLOUR":
688
533
  material = loader.parseColorMetaDirective(lp);
689
-
690
534
  if (material) {
691
535
  materials[material.userData.code] = material;
692
536
  } else {
693
- console.warn('LDrawLoader: Error parsing material' + lp.getLineNumberString());
537
+ console.warn("LDrawLoader: Error parsing material" + lp.getLineNumberString());
694
538
  }
695
-
696
539
  break;
697
-
698
- case '!CATEGORY':
540
+ case "!CATEGORY":
699
541
  category = lp.getToken();
700
542
  break;
701
-
702
- case '!KEYWORDS':
703
- const newKeywords = lp.getRemainingString().split(',');
704
-
543
+ case "!KEYWORDS":
544
+ const newKeywords = lp.getRemainingString().split(",");
705
545
  if (newKeywords.length > 0) {
706
546
  if (!keywords) {
707
547
  keywords = [];
708
548
  }
709
-
710
- newKeywords.forEach(function (keyword) {
549
+ newKeywords.forEach(function(keyword) {
711
550
  keywords.push(keyword.trim());
712
551
  });
713
552
  }
714
-
715
553
  break;
716
-
717
- case 'FILE':
554
+ case "FILE":
718
555
  if (lineIndex > 0) {
719
- // Start embedded text files parsing
720
556
  parsingEmbeddedFiles = true;
721
557
  currentEmbeddedFileName = lp.getRemainingString();
722
- currentEmbeddedText = '';
558
+ currentEmbeddedText = "";
723
559
  bfcCertified = false;
724
560
  bfcCCW = true;
725
561
  }
726
-
727
562
  break;
728
-
729
- case 'BFC':
730
- // Changes to the backface culling state
563
+ case "BFC":
731
564
  while (!lp.isAtTheEnd()) {
732
565
  const token = lp.getToken();
733
-
734
566
  switch (token) {
735
- case 'CERTIFY':
736
- case 'NOCERTIFY':
737
- bfcCertified = token === 'CERTIFY';
567
+ case "CERTIFY":
568
+ case "NOCERTIFY":
569
+ bfcCertified = token === "CERTIFY";
738
570
  bfcCCW = true;
739
571
  break;
740
-
741
- case 'CW':
742
- case 'CCW':
743
- bfcCCW = token === 'CCW';
572
+ case "CW":
573
+ case "CCW":
574
+ bfcCCW = token === "CCW";
744
575
  break;
745
-
746
- case 'INVERTNEXT':
576
+ case "INVERTNEXT":
747
577
  bfcInverted = true;
748
578
  break;
749
-
750
- case 'CLIP':
751
- case 'NOCLIP':
752
- bfcCull = token === 'CLIP';
579
+ case "CLIP":
580
+ case "NOCLIP":
581
+ bfcCull = token === "CLIP";
753
582
  break;
754
-
755
583
  default:
756
584
  console.warn('THREE.LDrawLoader: BFC directive "' + token + '" is unknown.');
757
585
  break;
758
586
  }
759
587
  }
760
-
761
588
  break;
762
-
763
- case 'STEP':
589
+ case "STEP":
764
590
  startingConstructionStep = true;
765
591
  break;
592
+ default:
593
+ break;
766
594
  }
767
595
  }
768
-
769
596
  break;
770
- // Line type 1: Sub-object file
771
-
772
- case '1':
597
+ case "1":
773
598
  colorCode = lp.getToken();
774
599
  material = getLocalMaterial(colorCode);
775
600
  const posX = parseFloat(lp.getToken());
@@ -784,48 +609,40 @@ class LDrawParsedCache {
784
609
  const m6 = parseFloat(lp.getToken());
785
610
  const m7 = parseFloat(lp.getToken());
786
611
  const m8 = parseFloat(lp.getToken());
787
- const matrix = new Matrix4().set(m0, m1, m2, posX, m3, m4, m5, posY, m6, m7, m8, posZ, 0, 0, 0, 1);
788
- let fileName = lp.getRemainingString().trim().replace(/\\/g, '/');
789
-
790
- if (loader.fileMap[fileName]) {
791
- // Found the subobject path in the preloaded file path map
792
- fileName = loader.fileMap[fileName];
612
+ const matrix = new THREE.Matrix4().set(m0, m1, m2, posX, m3, m4, m5, posY, m6, m7, m8, posZ, 0, 0, 0, 1);
613
+ let fileName2 = lp.getRemainingString().trim().replace(/\\/g, "/");
614
+ if (loader.fileMap[fileName2]) {
615
+ fileName2 = loader.fileMap[fileName2];
793
616
  } else {
794
- // Standardized subfolders
795
- if (fileName.startsWith('s/')) {
796
- fileName = 'parts/' + fileName;
797
- } else if (fileName.startsWith('48/')) {
798
- fileName = 'p/' + fileName;
617
+ if (fileName2.startsWith("s/")) {
618
+ fileName2 = "parts/" + fileName2;
619
+ } else if (fileName2.startsWith("48/")) {
620
+ fileName2 = "p/" + fileName2;
799
621
  }
800
622
  }
801
-
802
623
  subobjects.push({
803
- material: material,
804
- colorCode: colorCode,
805
- matrix: matrix,
806
- fileName: fileName,
624
+ material,
625
+ colorCode,
626
+ matrix,
627
+ fileName: fileName2,
807
628
  inverted: bfcInverted,
808
- startingConstructionStep: startingConstructionStep
629
+ startingConstructionStep
809
630
  });
810
631
  bfcInverted = false;
811
632
  break;
812
- // Line type 2: Line segment
813
-
814
- case '2':
633
+ case "2":
815
634
  colorCode = lp.getToken();
816
635
  material = getLocalMaterial(colorCode);
817
636
  v0 = lp.getVector();
818
637
  v1 = lp.getVector();
819
638
  segment = {
820
- material: material,
821
- colorCode: colorCode,
639
+ material,
640
+ colorCode,
822
641
  vertices: [v0, v1]
823
642
  };
824
643
  lineSegments.push(segment);
825
644
  break;
826
- // Line type 5: Conditional Line segment
827
-
828
- case '5':
645
+ case "5":
829
646
  colorCode = lp.getToken();
830
647
  material = getLocalMaterial(colorCode);
831
648
  v0 = lp.getVector();
@@ -833,21 +650,18 @@ class LDrawParsedCache {
833
650
  c0 = lp.getVector();
834
651
  c1 = lp.getVector();
835
652
  segment = {
836
- material: material,
837
- colorCode: colorCode,
653
+ material,
654
+ colorCode,
838
655
  vertices: [v0, v1],
839
656
  controlPoints: [c0, c1]
840
657
  };
841
658
  conditionalSegments.push(segment);
842
659
  break;
843
- // Line type 3: Triangle
844
-
845
- case '3':
660
+ case "3":
846
661
  colorCode = lp.getToken();
847
662
  material = getLocalMaterial(colorCode);
848
663
  ccw = bfcCCW;
849
664
  doubleSided = !bfcCertified || !bfcCull;
850
-
851
665
  if (ccw === true) {
852
666
  v0 = lp.getVector();
853
667
  v1 = lp.getVector();
@@ -857,36 +671,30 @@ class LDrawParsedCache {
857
671
  v1 = lp.getVector();
858
672
  v0 = lp.getVector();
859
673
  }
860
-
861
674
  faces.push({
862
- material: material,
863
- colorCode: colorCode,
675
+ material,
676
+ colorCode,
864
677
  faceNormal: null,
865
678
  vertices: [v0, v1, v2],
866
679
  normals: [null, null, null]
867
680
  });
868
681
  totalFaces++;
869
-
870
682
  if (doubleSided === true) {
871
683
  faces.push({
872
- material: material,
873
- colorCode: colorCode,
684
+ material,
685
+ colorCode,
874
686
  faceNormal: null,
875
687
  vertices: [v2, v1, v0],
876
688
  normals: [null, null, null]
877
689
  });
878
690
  totalFaces++;
879
691
  }
880
-
881
692
  break;
882
- // Line type 4: Quadrilateral
883
-
884
- case '4':
693
+ case "4":
885
694
  colorCode = lp.getToken();
886
695
  material = getLocalMaterial(colorCode);
887
696
  ccw = bfcCCW;
888
697
  doubleSided = !bfcCertified || !bfcCull;
889
-
890
698
  if (ccw === true) {
891
699
  v0 = lp.getVector();
892
700
  v1 = lp.getVector();
@@ -897,41 +705,33 @@ class LDrawParsedCache {
897
705
  v2 = lp.getVector();
898
706
  v1 = lp.getVector();
899
707
  v0 = lp.getVector();
900
- } // specifically place the triangle diagonal in the v0 and v1 slots so we can
901
- // account for the doubling of vertices later when smoothing normals.
902
-
903
-
708
+ }
904
709
  faces.push({
905
- material: material,
906
- colorCode: colorCode,
710
+ material,
711
+ colorCode,
907
712
  faceNormal: null,
908
713
  vertices: [v0, v1, v2, v3],
909
714
  normals: [null, null, null, null]
910
715
  });
911
716
  totalFaces += 2;
912
-
913
717
  if (doubleSided === true) {
914
718
  faces.push({
915
- material: material,
916
- colorCode: colorCode,
719
+ material,
720
+ colorCode,
917
721
  faceNormal: null,
918
722
  vertices: [v3, v2, v1, v0],
919
723
  normals: [null, null, null, null]
920
724
  });
921
725
  totalFaces += 2;
922
726
  }
923
-
924
727
  break;
925
-
926
728
  default:
927
- throw new Error('LDrawLoader: Unknown line type "' + lineType + '"' + lp.getLineNumberString() + '.');
729
+ throw new Error('LDrawLoader: Unknown line type "' + lineType + '"' + lp.getLineNumberString() + ".");
928
730
  }
929
731
  }
930
-
931
732
  if (parsingEmbeddedFiles) {
932
733
  this.setData(currentEmbeddedFileName, currentEmbeddedText);
933
734
  }
934
-
935
735
  return {
936
736
  faces,
937
737
  conditionalSegments,
@@ -946,155 +746,114 @@ class LDrawParsedCache {
946
746
  fileName,
947
747
  group: null
948
748
  };
949
- } // returns an (optionally cloned) instance of the data
950
-
951
-
749
+ }
952
750
  getData(fileName, clone = true) {
953
751
  const key = fileName.toLowerCase();
954
752
  const result = this._cache[key];
955
-
956
753
  if (result === null || result instanceof Promise) {
957
754
  return null;
958
755
  }
959
-
960
756
  if (clone) {
961
757
  return this.cloneResult(result);
962
758
  } else {
963
759
  return result;
964
760
  }
965
- } // kicks off a fetch and parse of the requested data if it hasn't already been loaded. Returns when
966
- // the data is ready to use and can be retrieved synchronously with "getData".
967
-
968
-
761
+ }
969
762
  async ensureDataLoaded(fileName) {
970
763
  const key = fileName.toLowerCase();
971
-
972
764
  if (!(key in this._cache)) {
973
- // replace the promise with a copy of the parsed data for immediate processing
974
- this._cache[key] = this.fetchData(fileName).then(text => {
765
+ this._cache[key] = this.fetchData(fileName).then((text) => {
975
766
  const info = this.parse(text, fileName);
976
767
  this._cache[key] = info;
977
768
  return info;
978
769
  });
979
770
  }
980
-
981
771
  await this._cache[key];
982
- } // sets the data in the cache from parsed data
983
-
984
-
772
+ }
985
773
  setData(fileName, text) {
986
774
  const key = fileName.toLowerCase();
987
775
  this._cache[key] = this.parse(text, fileName);
988
776
  }
989
-
990
- } // returns the material for an associated color code. If the color code is 16 for a face or 24 for
991
- // an edge then the passthroughColorCode is used.
992
-
993
-
777
+ }
994
778
  function getMaterialFromCode(colorCode, parentColorCode, materialHierarchy, forEdge) {
995
779
  const isPassthrough = !forEdge && colorCode === MAIN_COLOUR_CODE || forEdge && colorCode === MAIN_EDGE_COLOUR_CODE;
996
-
997
780
  if (isPassthrough) {
998
781
  colorCode = parentColorCode;
999
782
  }
1000
-
1001
783
  return materialHierarchy[colorCode] || null;
1002
- } // Class used to parse and build LDraw parts as three.js objects and cache them if they're a "Part" type.
1003
-
1004
-
784
+ }
1005
785
  class LDrawPartsGeometryCache {
1006
786
  constructor(loader) {
1007
787
  this.loader = loader;
1008
788
  this.parseCache = new LDrawParsedCache(loader);
1009
789
  this._cache = {};
1010
- } // Convert the given file information into a mesh by processing subobjects.
1011
-
1012
-
790
+ }
1013
791
  async processIntoMesh(info) {
1014
792
  const loader = this.loader;
1015
793
  const parseCache = this.parseCache;
1016
- const faceMaterials = new Set(); // Processes the part subobject information to load child parts and merge geometry onto part
1017
- // piece object.
1018
-
1019
- const processInfoSubobjects = async (info, subobject = null) => {
1020
- const subobjects = info.subobjects;
1021
- const promises = []; // Trigger load of all subobjects. If a subobject isn't a primitive then load it as a separate
1022
- // group which lets instruction steps apply correctly.
1023
-
794
+ const faceMaterials = /* @__PURE__ */ new Set();
795
+ const processInfoSubobjects = async (info2, subobject = null) => {
796
+ const subobjects = info2.subobjects;
797
+ const promises = [];
1024
798
  for (let i = 0, l = subobjects.length; i < l; i++) {
1025
- const subobject = subobjects[i];
1026
- const promise = parseCache.ensureDataLoaded(subobject.fileName).then(() => {
1027
- const subobjectInfo = parseCache.getData(subobject.fileName, false);
1028
-
799
+ const subobject2 = subobjects[i];
800
+ const promise = parseCache.ensureDataLoaded(subobject2.fileName).then(() => {
801
+ const subobjectInfo = parseCache.getData(subobject2.fileName, false);
1029
802
  if (!isPrimitiveType(subobjectInfo.type)) {
1030
- return this.loadModel(subobject.fileName).catch(error => {
803
+ return this.loadModel(subobject2.fileName).catch((error) => {
1031
804
  console.warn(error);
1032
805
  return null;
1033
806
  });
1034
807
  }
1035
-
1036
- return processInfoSubobjects(parseCache.getData(subobject.fileName), subobject);
808
+ return processInfoSubobjects(parseCache.getData(subobject2.fileName), subobject2);
1037
809
  });
1038
810
  promises.push(promise);
1039
811
  }
1040
-
1041
- const group = new Group();
1042
- group.userData.category = info.category;
1043
- group.userData.keywords = info.keywords;
1044
- info.group = group;
812
+ const group2 = new THREE.Group();
813
+ group2.userData.category = info2.category;
814
+ group2.userData.keywords = info2.keywords;
815
+ info2.group = group2;
1045
816
  const subobjectInfos = await Promise.all(promises);
1046
-
1047
817
  for (let i = 0, l = subobjectInfos.length; i < l; i++) {
1048
- const subobject = info.subobjects[i];
818
+ const subobject2 = info2.subobjects[i];
1049
819
  const subobjectInfo = subobjectInfos[i];
1050
-
1051
820
  if (subobjectInfo === null) {
1052
- // the subobject failed to load
1053
821
  continue;
1054
- } // if the subobject was loaded as a separate group then apply the parent scopes materials
1055
-
1056
-
822
+ }
1057
823
  if (subobjectInfo.isGroup) {
1058
824
  const subobjectGroup = subobjectInfo;
1059
- subobject.matrix.decompose(subobjectGroup.position, subobjectGroup.quaternion, subobjectGroup.scale);
1060
- subobjectGroup.userData.startingConstructionStep = subobject.startingConstructionStep;
1061
- subobjectGroup.name = subobject.fileName;
1062
- loader.applyMaterialsToMesh(subobjectGroup, subobject.colorCode, info.materials);
1063
- group.add(subobjectGroup);
825
+ subobject2.matrix.decompose(subobjectGroup.position, subobjectGroup.quaternion, subobjectGroup.scale);
826
+ subobjectGroup.userData.startingConstructionStep = subobject2.startingConstructionStep;
827
+ subobjectGroup.name = subobject2.fileName;
828
+ loader.applyMaterialsToMesh(subobjectGroup, subobject2.colorCode, info2.materials);
829
+ group2.add(subobjectGroup);
1064
830
  continue;
1065
- } // add the subobject group if it has children in case it has both children and primitives
1066
-
1067
-
831
+ }
1068
832
  if (subobjectInfo.group.children.length) {
1069
- group.add(subobjectInfo.group);
1070
- } // transform the primitives into the local space of the parent piece and append them to
1071
- // to the parent primitives list.
1072
-
1073
-
1074
- const parentLineSegments = info.lineSegments;
1075
- const parentConditionalSegments = info.conditionalSegments;
1076
- const parentFaces = info.faces;
833
+ group2.add(subobjectInfo.group);
834
+ }
835
+ const parentLineSegments = info2.lineSegments;
836
+ const parentConditionalSegments = info2.conditionalSegments;
837
+ const parentFaces = info2.faces;
1077
838
  const lineSegments = subobjectInfo.lineSegments;
1078
839
  const conditionalSegments = subobjectInfo.conditionalSegments;
1079
840
  const faces = subobjectInfo.faces;
1080
- const matrix = subobject.matrix;
1081
- const inverted = subobject.inverted;
841
+ const matrix = subobject2.matrix;
842
+ const inverted = subobject2.inverted;
1082
843
  const matrixScaleInverted = matrix.determinant() < 0;
1083
- const colorCode = subobject.colorCode;
844
+ const colorCode = subobject2.colorCode;
1084
845
  const lineColorCode = colorCode === MAIN_COLOUR_CODE ? MAIN_EDGE_COLOUR_CODE : colorCode;
1085
-
1086
- for (let i = 0, l = lineSegments.length; i < l; i++) {
1087
- const ls = lineSegments[i];
846
+ for (let i2 = 0, l2 = lineSegments.length; i2 < l2; i2++) {
847
+ const ls = lineSegments[i2];
1088
848
  const vertices = ls.vertices;
1089
849
  vertices[0].applyMatrix4(matrix);
1090
850
  vertices[1].applyMatrix4(matrix);
1091
851
  ls.colorCode = ls.colorCode === MAIN_EDGE_COLOUR_CODE ? lineColorCode : ls.colorCode;
1092
- ls.material = ls.material || getMaterialFromCode(ls.colorCode, ls.colorCode, info.materials, true);
852
+ ls.material = ls.material || getMaterialFromCode(ls.colorCode, ls.colorCode, info2.materials, true);
1093
853
  parentLineSegments.push(ls);
1094
854
  }
1095
-
1096
- for (let i = 0, l = conditionalSegments.length; i < l; i++) {
1097
- const os = conditionalSegments[i];
855
+ for (let i2 = 0, l2 = conditionalSegments.length; i2 < l2; i2++) {
856
+ const os = conditionalSegments[i2];
1098
857
  const vertices = os.vertices;
1099
858
  const controlPoints = os.controlPoints;
1100
859
  vertices[0].applyMatrix4(matrix);
@@ -1102,77 +861,54 @@ class LDrawPartsGeometryCache {
1102
861
  controlPoints[0].applyMatrix4(matrix);
1103
862
  controlPoints[1].applyMatrix4(matrix);
1104
863
  os.colorCode = os.colorCode === MAIN_EDGE_COLOUR_CODE ? lineColorCode : os.colorCode;
1105
- os.material = os.material || getMaterialFromCode(os.colorCode, os.colorCode, info.materials, true);
864
+ os.material = os.material || getMaterialFromCode(os.colorCode, os.colorCode, info2.materials, true);
1106
865
  parentConditionalSegments.push(os);
1107
866
  }
1108
-
1109
- for (let i = 0, l = faces.length; i < l; i++) {
1110
- const tri = faces[i];
867
+ for (let i2 = 0, l2 = faces.length; i2 < l2; i2++) {
868
+ const tri = faces[i2];
1111
869
  const vertices = tri.vertices;
1112
-
1113
- for (let i = 0, l = vertices.length; i < l; i++) {
1114
- vertices[i].applyMatrix4(matrix);
870
+ for (let i3 = 0, l3 = vertices.length; i3 < l3; i3++) {
871
+ vertices[i3].applyMatrix4(matrix);
1115
872
  }
1116
-
1117
873
  tri.colorCode = tri.colorCode === MAIN_COLOUR_CODE ? colorCode : tri.colorCode;
1118
- tri.material = tri.material || getMaterialFromCode(tri.colorCode, colorCode, info.materials, false);
1119
- faceMaterials.add(tri.colorCode); // If the scale of the object is negated then the triangle winding order
1120
- // needs to be flipped.
1121
-
874
+ tri.material = tri.material || getMaterialFromCode(tri.colorCode, colorCode, info2.materials, false);
875
+ faceMaterials.add(tri.colorCode);
1122
876
  if (matrixScaleInverted !== inverted) {
1123
877
  vertices.reverse();
1124
878
  }
1125
-
1126
879
  parentFaces.push(tri);
1127
880
  }
1128
-
1129
- info.totalFaces += subobjectInfo.totalFaces;
1130
- } // Apply the parent subobjects pass through material code to this object. This is done several times due
1131
- // to material scoping.
1132
-
1133
-
881
+ info2.totalFaces += subobjectInfo.totalFaces;
882
+ }
1134
883
  if (subobject) {
1135
- loader.applyMaterialsToMesh(group, subobject.colorCode, info.materials);
884
+ loader.applyMaterialsToMesh(group2, subobject.colorCode, info2.materials);
1136
885
  }
1137
-
1138
- return info;
1139
- }; // Track material use to see if we need to use the normal smooth slow path for hard edges.
1140
-
1141
-
886
+ return info2;
887
+ };
1142
888
  for (let i = 0, l = info.faces; i < l; i++) {
1143
889
  faceMaterials.add(info.faces[i].colorCode);
1144
890
  }
1145
-
1146
891
  await processInfoSubobjects(info);
1147
-
1148
892
  if (loader.smoothNormals) {
1149
893
  const checkSubSegments = faceMaterials.size > 1;
1150
894
  generateFaceNormals(info.faces);
1151
895
  smoothNormals(info.faces, info.lineSegments, checkSubSegments);
1152
- } // Add the primitive objects and metadata.
1153
-
1154
-
896
+ }
1155
897
  const group = info.group;
1156
-
1157
898
  if (info.faces.length > 0) {
1158
899
  group.add(createObject(info.faces, 3, false, info.totalFaces));
1159
900
  }
1160
-
1161
901
  if (info.lineSegments.length > 0) {
1162
902
  group.add(createObject(info.lineSegments, 2));
1163
903
  }
1164
-
1165
904
  if (info.conditionalSegments.length > 0) {
1166
905
  group.add(createObject(info.conditionalSegments, 2, true));
1167
906
  }
1168
-
1169
907
  return group;
1170
908
  }
1171
-
1172
909
  hasCachedModel(fileName) {
1173
910
  return fileName !== null && fileName.toLowerCase() in this._cache;
1174
911
  }
1175
-
1176
912
  async getCachedModel(fileName) {
1177
913
  if (fileName !== null && this.hasCachedModel(fileName)) {
1178
914
  const key = fileName.toLowerCase();
@@ -1181,90 +917,61 @@ class LDrawPartsGeometryCache {
1181
917
  } else {
1182
918
  return null;
1183
919
  }
1184
- } // Loads and parses the model with the given file name. Returns a cached copy if available.
1185
-
1186
-
920
+ }
1187
921
  async loadModel(fileName) {
1188
922
  const parseCache = this.parseCache;
1189
923
  const key = fileName.toLowerCase();
1190
-
1191
924
  if (this.hasCachedModel(fileName)) {
1192
- // Return cached model if available.
1193
925
  return this.getCachedModel(fileName);
1194
926
  } else {
1195
- // Otherwise parse a new model.
1196
- // Ensure the file data is loaded and pre parsed.
1197
927
  await parseCache.ensureDataLoaded(fileName);
1198
928
  const info = parseCache.getData(fileName);
1199
- const promise = this.processIntoMesh(info); // Now that the file has loaded it's possible that another part parse has been waiting in parallel
1200
- // so check the cache again to see if it's been added since the last async operation so we don't
1201
- // do unnecessary work.
1202
-
929
+ const promise = this.processIntoMesh(info);
1203
930
  if (this.hasCachedModel(fileName)) {
1204
931
  return this.getCachedModel(fileName);
1205
- } // Cache object if it's a part so it can be reused later.
1206
-
1207
-
932
+ }
1208
933
  if (isPartType(info.type)) {
1209
934
  this._cache[key] = promise;
1210
- } // return a copy
1211
-
1212
-
935
+ }
1213
936
  const group = await promise;
1214
937
  return group.clone();
1215
938
  }
1216
- } // parses the given model text into a renderable object. Returns cached copy if available.
1217
-
1218
-
939
+ }
1219
940
  async parseModel(text) {
1220
941
  const parseCache = this.parseCache;
1221
942
  const info = parseCache.parse(text);
1222
-
1223
943
  if (isPartType(info.type) && this.hasCachedModel(info.fileName)) {
1224
944
  return this.getCachedModel(info.fileName);
1225
945
  }
1226
-
1227
946
  return this.processIntoMesh(info);
1228
947
  }
1229
-
1230
948
  }
1231
-
1232
949
  function sortByMaterial(a, b) {
1233
950
  if (a.colorCode === b.colorCode) {
1234
951
  return 0;
1235
952
  }
1236
-
1237
953
  if (a.colorCode < b.colorCode) {
1238
954
  return -1;
1239
955
  }
1240
-
1241
956
  return 1;
1242
957
  }
1243
-
1244
958
  function createObject(elements, elementSize, isConditionalSegments = false, totalElements = null) {
1245
- // Creates a LineSegments (elementSize = 2) or a Mesh (elementSize = 3 )
1246
- // With per face / segment material, implemented with mesh groups and materials array
1247
- // Sort the faces or line segments by color code to make later the mesh groups
1248
959
  elements.sort(sortByMaterial);
1249
-
1250
960
  if (totalElements === null) {
1251
961
  totalElements = elements.length;
1252
962
  }
1253
-
1254
963
  const positions = new Float32Array(elementSize * totalElements * 3);
1255
964
  const normals = elementSize === 3 ? new Float32Array(elementSize * totalElements * 3) : null;
1256
965
  const materials = [];
1257
966
  const quadArray = new Array(6);
1258
- const bufferGeometry = new BufferGeometry();
967
+ const bufferGeometry = new THREE.BufferGeometry();
1259
968
  let prevMaterial = null;
1260
969
  let index0 = 0;
1261
970
  let numGroupVerts = 0;
1262
971
  let offset = 0;
1263
-
1264
972
  for (let iElem = 0, nElem = elements.length; iElem < nElem; iElem++) {
1265
973
  const elem = elements[iElem];
1266
974
  let vertices = elem.vertices;
1267
-
1268
975
  if (vertices.length === 4) {
1269
976
  quadArray[0] = vertices[0];
1270
977
  quadArray[1] = vertices[1];
@@ -1274,31 +981,23 @@ function createObject(elements, elementSize, isConditionalSegments = false, tota
1274
981
  quadArray[5] = vertices[3];
1275
982
  vertices = quadArray;
1276
983
  }
1277
-
1278
984
  for (let j = 0, l = vertices.length; j < l; j++) {
1279
985
  const v = vertices[j];
1280
986
  const index = offset + j * 3;
1281
987
  positions[index + 0] = v.x;
1282
988
  positions[index + 1] = v.y;
1283
989
  positions[index + 2] = v.z;
1284
- } // create the normals array if this is a set of faces
1285
-
1286
-
990
+ }
1287
991
  if (elementSize === 3) {
1288
992
  if (!elem.faceNormal) {
1289
993
  const v0 = vertices[0];
1290
994
  const v1 = vertices[1];
1291
995
  const v2 = vertices[2];
1292
-
1293
996
  _tempVec0.subVectors(v1, v0);
1294
-
1295
997
  _tempVec1.subVectors(v2, v1);
1296
-
1297
- elem.faceNormal = new Vector3().crossVectors(_tempVec0, _tempVec1).normalize();
998
+ elem.faceNormal = new THREE.Vector3().crossVectors(_tempVec0, _tempVec1).normalize();
1298
999
  }
1299
-
1300
1000
  let elemNormals = elem.normals;
1301
-
1302
1001
  if (elemNormals.length === 4) {
1303
1002
  quadArray[0] = elemNormals[0];
1304
1003
  quadArray[1] = elemNormals[1];
@@ -1308,29 +1007,22 @@ function createObject(elements, elementSize, isConditionalSegments = false, tota
1308
1007
  quadArray[5] = elemNormals[3];
1309
1008
  elemNormals = quadArray;
1310
1009
  }
1311
-
1312
1010
  for (let j = 0, l = elemNormals.length; j < l; j++) {
1313
- // use face normal if a vertex normal is not provided
1314
1011
  let n = elem.faceNormal;
1315
-
1316
1012
  if (elemNormals[j]) {
1317
1013
  n = elemNormals[j].norm;
1318
1014
  }
1319
-
1320
1015
  const index = offset + j * 3;
1321
1016
  normals[index + 0] = n.x;
1322
1017
  normals[index + 1] = n.y;
1323
1018
  normals[index + 2] = n.z;
1324
1019
  }
1325
1020
  }
1326
-
1327
1021
  if (prevMaterial !== elem.colorCode) {
1328
1022
  if (prevMaterial !== null) {
1329
1023
  bufferGeometry.addGroup(index0, numGroupVerts, materials.length - 1);
1330
1024
  }
1331
-
1332
1025
  const material = elem.material;
1333
-
1334
1026
  if (material !== null) {
1335
1027
  if (elementSize === 3) {
1336
1028
  materials.push(material);
@@ -1346,49 +1038,38 @@ function createObject(elements, elementSize, isConditionalSegments = false, tota
1346
1038
  }
1347
1039
  }
1348
1040
  } else {
1349
- // If a material has not been made available yet then keep the color code string in the material array
1350
- // to save the spot for the material once a parent scopes materials are being applied to the object.
1351
1041
  materials.push(elem.colorCode);
1352
1042
  }
1353
-
1354
1043
  prevMaterial = elem.colorCode;
1355
1044
  index0 = offset / 3;
1356
1045
  numGroupVerts = vertices.length;
1357
1046
  } else {
1358
1047
  numGroupVerts += vertices.length;
1359
1048
  }
1360
-
1361
1049
  offset += 3 * vertices.length;
1362
1050
  }
1363
-
1364
1051
  if (numGroupVerts > 0) {
1365
1052
  bufferGeometry.addGroup(index0, Infinity, materials.length - 1);
1366
1053
  }
1367
-
1368
- bufferGeometry.setAttribute('position', new BufferAttribute(positions, 3));
1369
-
1054
+ bufferGeometry.setAttribute("position", new THREE.BufferAttribute(positions, 3));
1370
1055
  if (normals !== null) {
1371
- bufferGeometry.setAttribute('normal', new BufferAttribute(normals, 3));
1056
+ bufferGeometry.setAttribute("normal", new THREE.BufferAttribute(normals, 3));
1372
1057
  }
1373
-
1374
1058
  let object3d = null;
1375
-
1376
1059
  if (elementSize === 2) {
1377
1060
  if (isConditionalSegments) {
1378
1061
  object3d = new ConditionalLineSegments(bufferGeometry, materials.length === 1 ? materials[0] : materials);
1379
1062
  } else {
1380
- object3d = new LineSegments(bufferGeometry, materials.length === 1 ? materials[0] : materials);
1063
+ object3d = new THREE.LineSegments(bufferGeometry, materials.length === 1 ? materials[0] : materials);
1381
1064
  }
1382
1065
  } else if (elementSize === 3) {
1383
- object3d = new Mesh(bufferGeometry, materials.length === 1 ? materials[0] : materials);
1066
+ object3d = new THREE.Mesh(bufferGeometry, materials.length === 1 ? materials[0] : materials);
1384
1067
  }
1385
-
1386
1068
  if (isConditionalSegments) {
1387
1069
  object3d.isConditionalLine = true;
1388
1070
  const controlArray0 = new Float32Array(elements.length * 3 * 2);
1389
1071
  const controlArray1 = new Float32Array(elements.length * 3 * 2);
1390
1072
  const directionArray = new Float32Array(elements.length * 3 * 2);
1391
-
1392
1073
  for (let i = 0, l = elements.length; i < l; i++) {
1393
1074
  const os = elements[i];
1394
1075
  const vertices = os.vertices;
@@ -1417,41 +1098,29 @@ function createObject(elements, elementSize, isConditionalSegments = false, tota
1417
1098
  directionArray[index + 4] = v1.y - v0.y;
1418
1099
  directionArray[index + 5] = v1.z - v0.z;
1419
1100
  }
1420
-
1421
- bufferGeometry.setAttribute('control0', new BufferAttribute(controlArray0, 3, false));
1422
- bufferGeometry.setAttribute('control1', new BufferAttribute(controlArray1, 3, false));
1423
- bufferGeometry.setAttribute('direction', new BufferAttribute(directionArray, 3, false));
1101
+ bufferGeometry.setAttribute("control0", new THREE.BufferAttribute(controlArray0, 3, false));
1102
+ bufferGeometry.setAttribute("control1", new THREE.BufferAttribute(controlArray1, 3, false));
1103
+ bufferGeometry.setAttribute("direction", new THREE.BufferAttribute(directionArray, 3, false));
1424
1104
  }
1425
-
1426
1105
  return object3d;
1427
- } //
1428
-
1429
-
1430
- class LDrawLoader extends Loader {
1106
+ }
1107
+ class LDrawLoader extends THREE.Loader {
1431
1108
  constructor(manager) {
1432
- super(manager); // Array of THREE.Material
1433
-
1109
+ super(manager);
1434
1110
  this.materials = [];
1435
- this.materialLibrary = {}; // This also allows to handle the embedded text files ("0 FILE" lines)
1436
-
1437
- this.partsCache = new LDrawPartsGeometryCache(this); // This object is a map from file names to paths. It agilizes the paths search. If it is not set then files will be searched by trial and error.
1438
-
1439
- this.fileMap = {}; // Initializes the materials library with default materials
1440
-
1441
- this.setMaterials([]); // If this flag is set to true the vertex normals will be smoothed.
1442
-
1443
- this.smoothNormals = true; // The path to load parts from the LDraw parts library from.
1444
-
1445
- this.partsLibraryPath = '';
1111
+ this.materialLibrary = {};
1112
+ this.partsCache = new LDrawPartsGeometryCache(this);
1113
+ this.fileMap = {};
1114
+ this.setMaterials([]);
1115
+ this.smoothNormals = true;
1116
+ this.partsLibraryPath = "";
1446
1117
  }
1447
-
1448
1118
  setPartsLibraryPath(path) {
1449
1119
  this.partsLibraryPath = path;
1450
1120
  return this;
1451
1121
  }
1452
-
1453
1122
  async preloadMaterials(url) {
1454
- const fileLoader = new FileLoader(this.manager);
1123
+ const fileLoader = new THREE.FileLoader(this.manager);
1455
1124
  fileLoader.setPath(this.path);
1456
1125
  fileLoader.setRequestHeader(this.requestHeader);
1457
1126
  fileLoader.setWithCredentials(this.withCredentials);
@@ -1459,89 +1128,75 @@ class LDrawLoader extends Loader {
1459
1128
  const colorLineRegex = /^0 !COLOUR/;
1460
1129
  const lines = text.split(/[\n\r]/g);
1461
1130
  const materials = [];
1462
-
1463
1131
  for (let i = 0, l = lines.length; i < l; i++) {
1464
1132
  const line = lines[i];
1465
-
1466
1133
  if (colorLineRegex.test(line)) {
1467
- const directive = line.replace(colorLineRegex, '');
1134
+ const directive = line.replace(colorLineRegex, "");
1468
1135
  const material = this.parseColorMetaDirective(new LineParser(directive));
1469
1136
  materials.push(material);
1470
1137
  }
1471
1138
  }
1472
-
1473
1139
  this.setMaterials(materials);
1474
1140
  }
1475
-
1476
1141
  load(url, onLoad, onProgress, onError) {
1477
- const fileLoader = new FileLoader(this.manager);
1142
+ const fileLoader = new THREE.FileLoader(this.manager);
1478
1143
  fileLoader.setPath(this.path);
1479
1144
  fileLoader.setRequestHeader(this.requestHeader);
1480
1145
  fileLoader.setWithCredentials(this.withCredentials);
1481
- fileLoader.load(url, text => {
1482
- this.partsCache.parseModel(text, this.materialLibrary).then(group => {
1483
- this.applyMaterialsToMesh(group, MAIN_COLOUR_CODE, this.materialLibrary, true);
1484
- this.computeConstructionSteps(group);
1485
- onLoad(group);
1486
- }).catch(onError);
1487
- }, onProgress, onError);
1146
+ fileLoader.load(
1147
+ url,
1148
+ (text) => {
1149
+ this.partsCache.parseModel(text, this.materialLibrary).then((group) => {
1150
+ this.applyMaterialsToMesh(group, MAIN_COLOUR_CODE, this.materialLibrary, true);
1151
+ this.computeConstructionSteps(group);
1152
+ onLoad(group);
1153
+ }).catch(onError);
1154
+ },
1155
+ onProgress,
1156
+ onError
1157
+ );
1488
1158
  }
1489
-
1490
1159
  parse(text, onLoad) {
1491
- this.partsCache.parseModel(text, this.materialLibrary).then(group => {
1160
+ this.partsCache.parseModel(text, this.materialLibrary).then((group) => {
1492
1161
  this.computeConstructionSteps(group);
1493
1162
  onLoad(group);
1494
1163
  });
1495
1164
  }
1496
-
1497
1165
  setMaterials(materials) {
1498
1166
  this.materialLibrary = {};
1499
1167
  this.materials = [];
1500
-
1501
1168
  for (let i = 0, l = materials.length; i < l; i++) {
1502
1169
  this.addMaterial(materials[i]);
1503
- } // Add default main triangle and line edge materials (used in pieces that can be colored with a main color)
1504
-
1505
-
1506
- this.addMaterial(this.parseColorMetaDirective(new LineParser('Main_Colour CODE 16 VALUE #FF8080 EDGE #333333')));
1507
- this.addMaterial(this.parseColorMetaDirective(new LineParser('Edge_Colour CODE 24 VALUE #A0A0A0 EDGE #333333')));
1170
+ }
1171
+ this.addMaterial(this.parseColorMetaDirective(new LineParser("Main_Colour CODE 16 VALUE #FF8080 EDGE #333333")));
1172
+ this.addMaterial(this.parseColorMetaDirective(new LineParser("Edge_Colour CODE 24 VALUE #A0A0A0 EDGE #333333")));
1508
1173
  return this;
1509
1174
  }
1510
-
1511
1175
  setFileMap(fileMap) {
1512
1176
  this.fileMap = fileMap;
1513
1177
  return this;
1514
1178
  }
1515
-
1516
1179
  addMaterial(material) {
1517
- // Adds a material to the material library which is on top of the parse scopes stack. And also to the materials array
1518
1180
  const matLib = this.materialLibrary;
1519
-
1520
1181
  if (!matLib[material.userData.code]) {
1521
1182
  this.materials.push(material);
1522
1183
  matLib[material.userData.code] = material;
1523
1184
  }
1524
-
1525
1185
  return this;
1526
1186
  }
1527
-
1528
1187
  getMaterial(colorCode) {
1529
- if (colorCode.startsWith('0x2')) {
1530
- // Special 'direct' material value (RGB color)
1188
+ if (colorCode.startsWith("0x2")) {
1531
1189
  const color = colorCode.substring(3);
1532
- return this.parseColorMetaDirective(new LineParser('Direct_Color_' + color + ' CODE -1 VALUE #' + color + ' EDGE #' + color + ''));
1190
+ return this.parseColorMetaDirective(
1191
+ new LineParser("Direct_Color_" + color + " CODE -1 VALUE #" + color + " EDGE #" + color)
1192
+ );
1533
1193
  }
1534
-
1535
1194
  return this.materialLibrary[colorCode] || null;
1536
- } // Applies the appropriate materials to a prebuilt hierarchy of geometry. Assumes that color codes are present
1537
- // in the material array if they need to be filled in.
1538
-
1539
-
1195
+ }
1540
1196
  applyMaterialsToMesh(group, parentColorCode, materialHierarchy, finalMaterialPass = false) {
1541
- // find any missing materials as indicated by a color code string and replace it with a material from the current material lib
1542
1197
  const loader = this;
1543
1198
  const parentIsPassthrough = parentColorCode === MAIN_COLOUR_CODE;
1544
- group.traverse(c => {
1199
+ group.traverse((c) => {
1545
1200
  if (c.isMesh || c.isLineSegments) {
1546
1201
  if (Array.isArray(c.material)) {
1547
1202
  for (let i = 0, l = c.material.length; i < l; i++) {
@@ -1553,259 +1208,177 @@ class LDrawLoader extends Loader {
1553
1208
  c.material = getMaterial(c, c.material);
1554
1209
  }
1555
1210
  }
1556
- }); // Returns the appropriate material for the object (line or face) given color code. If the code is "pass through"
1557
- // (24 for lines, 16 for edges) then the pass through color code is used. If that is also pass through then it's
1558
- // simply returned for the subsequent material application.
1559
-
1211
+ });
1560
1212
  function getMaterial(c, colorCode) {
1561
- // if our parent is a passthrough color code and we don't have the current material color available then
1562
- // return early.
1563
1213
  if (parentIsPassthrough && !(colorCode in materialHierarchy) && !finalMaterialPass) {
1564
1214
  return colorCode;
1565
1215
  }
1566
-
1567
1216
  const forEdge = c.isLineSegments || c.isConditionalLine;
1568
1217
  const isPassthrough = !forEdge && colorCode === MAIN_COLOUR_CODE || forEdge && colorCode === MAIN_EDGE_COLOUR_CODE;
1569
-
1570
1218
  if (isPassthrough) {
1571
1219
  colorCode = parentColorCode;
1572
1220
  }
1573
-
1574
1221
  let material = null;
1575
-
1576
1222
  if (colorCode in materialHierarchy) {
1577
1223
  material = materialHierarchy[colorCode];
1578
1224
  } else if (finalMaterialPass) {
1579
- // see if we can get the final material from from the "getMaterial" function which will attempt to
1580
- // parse the "direct" colors
1581
1225
  material = loader.getMaterial(colorCode);
1582
-
1583
1226
  if (material === null) {
1584
- // otherwise throw an error if this is final opportunity to set the material
1585
1227
  throw new Error(`LDrawLoader: Material properties for code ${colorCode} not available.`);
1586
1228
  }
1587
1229
  } else {
1588
1230
  return colorCode;
1589
1231
  }
1590
-
1591
1232
  if (c.isLineSegments) {
1592
1233
  material = material.userData.edgeMaterial;
1593
-
1594
1234
  if (c.isConditionalLine) {
1595
1235
  material = material.userData.conditionalEdgeMaterial;
1596
1236
  }
1597
1237
  }
1598
-
1599
1238
  return material;
1600
1239
  }
1601
1240
  }
1602
-
1603
1241
  getMainMaterial() {
1604
1242
  return this.getMaterial(MAIN_COLOUR_CODE);
1605
1243
  }
1606
-
1607
1244
  getMainEdgeMaterial() {
1608
1245
  return this.getMaterial(MAIN_EDGE_COLOUR_CODE);
1609
1246
  }
1610
-
1611
1247
  parseColorMetaDirective(lineParser) {
1612
- // Parses a color definition and returns a THREE.Material
1613
- let code = null; // Triangle and line colors
1614
-
1615
- let color = 0xff00ff;
1616
- let edgeColor = 0xff00ff; // Transparency
1617
-
1248
+ let code = null;
1249
+ let color = 16711935;
1250
+ let edgeColor = 16711935;
1618
1251
  let alpha = 1;
1619
- let isTransparent = false; // Self-illumination:
1620
-
1252
+ let isTransparent = false;
1621
1253
  let luminance = 0;
1622
1254
  let finishType = FINISH_TYPE_DEFAULT;
1623
1255
  let edgeMaterial = null;
1624
1256
  const name = lineParser.getToken();
1625
-
1626
1257
  if (!name) {
1627
- throw new Error('LDrawLoader: Material name was expected after "!COLOUR tag' + lineParser.getLineNumberString() + '.');
1628
- } // Parse tag tokens and their parameters
1629
-
1630
-
1258
+ throw new Error(
1259
+ 'LDrawLoader: Material name was expected after "!COLOUR tag' + lineParser.getLineNumberString() + "."
1260
+ );
1261
+ }
1631
1262
  let token = null;
1632
-
1633
1263
  while (true) {
1634
1264
  token = lineParser.getToken();
1635
-
1636
1265
  if (!token) {
1637
1266
  break;
1638
1267
  }
1639
-
1640
1268
  switch (token.toUpperCase()) {
1641
- case 'CODE':
1269
+ case "CODE":
1642
1270
  code = lineParser.getToken();
1643
1271
  break;
1644
-
1645
- case 'VALUE':
1272
+ case "VALUE":
1646
1273
  color = lineParser.getToken();
1647
-
1648
- if (color.startsWith('0x')) {
1649
- color = '#' + color.substring(2);
1650
- } else if (!color.startsWith('#')) {
1651
- throw new Error('LDrawLoader: Invalid color while parsing material' + lineParser.getLineNumberString() + '.');
1274
+ if (color.startsWith("0x")) {
1275
+ color = "#" + color.substring(2);
1276
+ } else if (!color.startsWith("#")) {
1277
+ throw new Error(
1278
+ "LDrawLoader: Invalid color while parsing material" + lineParser.getLineNumberString() + "."
1279
+ );
1652
1280
  }
1653
-
1654
1281
  break;
1655
-
1656
- case 'EDGE':
1282
+ case "EDGE":
1657
1283
  edgeColor = lineParser.getToken();
1658
-
1659
- if (edgeColor.startsWith('0x')) {
1660
- edgeColor = '#' + edgeColor.substring(2);
1661
- } else if (!edgeColor.startsWith('#')) {
1662
- // Try to see if edge color is a color code
1284
+ if (edgeColor.startsWith("0x")) {
1285
+ edgeColor = "#" + edgeColor.substring(2);
1286
+ } else if (!edgeColor.startsWith("#")) {
1663
1287
  edgeMaterial = this.getMaterial(edgeColor);
1664
-
1665
1288
  if (!edgeMaterial) {
1666
- throw new Error('LDrawLoader: Invalid edge color while parsing material' + lineParser.getLineNumberString() + '.');
1667
- } // Get the edge material for this triangle material
1668
-
1669
-
1289
+ throw new Error(
1290
+ "LDrawLoader: Invalid edge color while parsing material" + lineParser.getLineNumberString() + "."
1291
+ );
1292
+ }
1670
1293
  edgeMaterial = edgeMaterial.userData.edgeMaterial;
1671
1294
  }
1672
-
1673
1295
  break;
1674
-
1675
- case 'ALPHA':
1296
+ case "ALPHA":
1676
1297
  alpha = parseInt(lineParser.getToken());
1677
-
1678
1298
  if (isNaN(alpha)) {
1679
- throw new Error('LDrawLoader: Invalid alpha value in material definition' + lineParser.getLineNumberString() + '.');
1299
+ throw new Error(
1300
+ "LDrawLoader: Invalid alpha value in material definition" + lineParser.getLineNumberString() + "."
1301
+ );
1680
1302
  }
1681
-
1682
1303
  alpha = Math.max(0, Math.min(1, alpha / 255));
1683
-
1684
1304
  if (alpha < 1) {
1685
1305
  isTransparent = true;
1686
1306
  }
1687
-
1688
1307
  break;
1689
-
1690
- case 'LUMINANCE':
1308
+ case "LUMINANCE":
1691
1309
  luminance = parseInt(lineParser.getToken());
1692
-
1693
1310
  if (isNaN(luminance)) {
1694
- throw new Error('LDrawLoader: Invalid luminance value in material definition' + LineParser.getLineNumberString() + '.');
1311
+ throw new Error(
1312
+ "LDrawLoader: Invalid luminance value in material definition" + LineParser.getLineNumberString() + "."
1313
+ );
1695
1314
  }
1696
-
1697
1315
  luminance = Math.max(0, Math.min(1, luminance / 255));
1698
1316
  break;
1699
-
1700
- case 'CHROME':
1317
+ case "CHROME":
1701
1318
  finishType = FINISH_TYPE_CHROME;
1702
1319
  break;
1703
-
1704
- case 'PEARLESCENT':
1320
+ case "PEARLESCENT":
1705
1321
  finishType = FINISH_TYPE_PEARLESCENT;
1706
1322
  break;
1707
-
1708
- case 'RUBBER':
1323
+ case "RUBBER":
1709
1324
  finishType = FINISH_TYPE_RUBBER;
1710
1325
  break;
1711
-
1712
- case 'MATTE_METALLIC':
1326
+ case "MATTE_METALLIC":
1713
1327
  finishType = FINISH_TYPE_MATTE_METALLIC;
1714
1328
  break;
1715
-
1716
- case 'METAL':
1329
+ case "METAL":
1717
1330
  finishType = FINISH_TYPE_METAL;
1718
1331
  break;
1719
-
1720
- case 'MATERIAL':
1721
- // Not implemented
1332
+ case "MATERIAL":
1722
1333
  lineParser.setToEnd();
1723
1334
  break;
1724
-
1725
1335
  default:
1726
- throw new Error('LDrawLoader: Unknown token "' + token + '" while parsing material' + lineParser.getLineNumberString() + '.');
1336
+ throw new Error(
1337
+ 'LDrawLoader: Unknown token "' + token + '" while parsing material' + lineParser.getLineNumberString() + "."
1338
+ );
1727
1339
  }
1728
1340
  }
1729
-
1730
1341
  let material = null;
1731
-
1732
1342
  switch (finishType) {
1733
1343
  case FINISH_TYPE_DEFAULT:
1734
- material = new MeshStandardMaterial({
1735
- color: color,
1736
- roughness: 0.3,
1737
- metalness: 0
1738
- });
1344
+ material = new THREE.MeshStandardMaterial({ color, roughness: 0.3, metalness: 0 });
1739
1345
  break;
1740
-
1741
1346
  case FINISH_TYPE_PEARLESCENT:
1742
- // Try to imitate pearlescency by making the surface glossy
1743
- material = new MeshStandardMaterial({
1744
- color: color,
1745
- roughness: 0.3,
1746
- metalness: 0.25
1747
- });
1347
+ material = new THREE.MeshStandardMaterial({ color, roughness: 0.3, metalness: 0.25 });
1748
1348
  break;
1749
-
1750
1349
  case FINISH_TYPE_CHROME:
1751
- // Mirror finish surface
1752
- material = new MeshStandardMaterial({
1753
- color: color,
1754
- roughness: 0,
1755
- metalness: 1
1756
- });
1350
+ material = new THREE.MeshStandardMaterial({ color, roughness: 0, metalness: 1 });
1757
1351
  break;
1758
-
1759
1352
  case FINISH_TYPE_RUBBER:
1760
- // Rubber finish
1761
- material = new MeshStandardMaterial({
1762
- color: color,
1763
- roughness: 0.9,
1764
- metalness: 0
1765
- });
1353
+ material = new THREE.MeshStandardMaterial({ color, roughness: 0.9, metalness: 0 });
1766
1354
  break;
1767
-
1768
1355
  case FINISH_TYPE_MATTE_METALLIC:
1769
- // Brushed metal finish
1770
- material = new MeshStandardMaterial({
1771
- color: color,
1772
- roughness: 0.8,
1773
- metalness: 0.4
1774
- });
1356
+ material = new THREE.MeshStandardMaterial({ color, roughness: 0.8, metalness: 0.4 });
1775
1357
  break;
1776
-
1777
1358
  case FINISH_TYPE_METAL:
1778
- // Average metal finish
1779
- material = new MeshStandardMaterial({
1780
- color: color,
1781
- roughness: 0.2,
1782
- metalness: 0.85
1783
- });
1359
+ material = new THREE.MeshStandardMaterial({ color, roughness: 0.2, metalness: 0.85 });
1360
+ break;
1361
+ default:
1784
1362
  break;
1785
1363
  }
1786
-
1787
1364
  material.transparent = isTransparent;
1788
1365
  material.premultipliedAlpha = true;
1789
1366
  material.opacity = alpha;
1790
1367
  material.depthWrite = !isTransparent;
1791
1368
  material.polygonOffset = true;
1792
1369
  material.polygonOffsetFactor = 1;
1793
-
1794
1370
  if (luminance !== 0) {
1795
1371
  material.emissive.set(material.color).multiplyScalar(luminance);
1796
1372
  }
1797
-
1798
1373
  if (!edgeMaterial) {
1799
- // This is the material used for edges
1800
- edgeMaterial = new LineBasicMaterial({
1374
+ edgeMaterial = new THREE.LineBasicMaterial({
1801
1375
  color: edgeColor,
1802
1376
  transparent: isTransparent,
1803
1377
  opacity: alpha,
1804
1378
  depthWrite: !isTransparent
1805
1379
  });
1806
1380
  edgeMaterial.userData.code = code;
1807
- edgeMaterial.name = name + ' - Edge'; // This is the material used for conditional edges
1808
-
1381
+ edgeMaterial.name = name + " - Edge";
1809
1382
  edgeMaterial.userData.conditionalEdgeMaterial = new LDrawConditionalLineMaterial({
1810
1383
  fog: true,
1811
1384
  transparent: isTransparent,
@@ -1814,29 +1387,23 @@ class LDrawLoader extends Loader {
1814
1387
  opacity: alpha
1815
1388
  });
1816
1389
  }
1817
-
1818
1390
  material.userData.code = code;
1819
1391
  material.name = name;
1820
1392
  material.userData.edgeMaterial = edgeMaterial;
1821
1393
  this.addMaterial(material);
1822
1394
  return material;
1823
1395
  }
1824
-
1825
1396
  computeConstructionSteps(model) {
1826
- // Sets userdata.constructionStep number in Group objects and userData.numConstructionSteps number in the root Group object.
1827
1397
  let stepNumber = 0;
1828
- model.traverse(c => {
1398
+ model.traverse((c) => {
1829
1399
  if (c.isGroup) {
1830
1400
  if (c.userData.startingConstructionStep) {
1831
1401
  stepNumber++;
1832
1402
  }
1833
-
1834
1403
  c.userData.constructionStep = stepNumber;
1835
1404
  }
1836
1405
  });
1837
1406
  model.userData.numConstructionSteps = stepNumber + 1;
1838
1407
  }
1839
-
1840
1408
  }
1841
-
1842
- export { LDrawLoader };
1409
+ exports.LDrawLoader = LDrawLoader;