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,255 +1,211 @@
1
- import { Loader, LoaderUtils, FileLoader, Vector3, Quaternion, Matrix4, MeshBasicMaterial, Scene, TextureLoader, Euler, MathUtils, AnimationClip, VectorKeyframeTrack, QuaternionKeyframeTrack, MeshLambertMaterial, MeshPhongMaterial, Vector2, DoubleSide, FrontSide, PerspectiveCamera, OrthographicCamera, Color, AmbientLight, SpotLight, PointLight, DirectionalLight, BufferGeometry, Float32BufferAttribute, Skeleton, Bone, Group, LineBasicMaterial, SkinnedMesh, Mesh, Line, LineSegments, RepeatWrapping, ClampToEdgeWrapping } from 'three';
2
- import { TGALoader } from './TGALoader.js';
3
-
4
- class ColladaLoader extends Loader {
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const THREE = require("three");
4
+ const TGALoader = require("./TGALoader.js");
5
+ class ColladaLoader extends THREE.Loader {
5
6
  constructor(manager) {
6
7
  super(manager);
7
8
  }
8
-
9
9
  load(url, onLoad, onProgress, onError) {
10
10
  const scope = this;
11
- const path = scope.path === '' ? LoaderUtils.extractUrlBase(url) : scope.path;
12
- const loader = new FileLoader(scope.manager);
11
+ const path = scope.path === "" ? THREE.LoaderUtils.extractUrlBase(url) : scope.path;
12
+ const loader = new THREE.FileLoader(scope.manager);
13
13
  loader.setPath(scope.path);
14
14
  loader.setRequestHeader(scope.requestHeader);
15
15
  loader.setWithCredentials(scope.withCredentials);
16
- loader.load(url, function (text) {
17
- try {
18
- onLoad(scope.parse(text, path));
19
- } catch (e) {
20
- if (onError) {
21
- onError(e);
22
- } else {
23
- console.error(e);
16
+ loader.load(
17
+ url,
18
+ function(text) {
19
+ try {
20
+ onLoad(scope.parse(text, path));
21
+ } catch (e) {
22
+ if (onError) {
23
+ onError(e);
24
+ } else {
25
+ console.error(e);
26
+ }
27
+ scope.manager.itemError(url);
24
28
  }
25
-
26
- scope.manager.itemError(url);
27
- }
28
- }, onProgress, onError);
29
+ },
30
+ onProgress,
31
+ onError
32
+ );
29
33
  }
30
-
31
34
  parse(text, path) {
32
- function getElementsByTagName(xml, name) {
33
- // Non recursive xml.getElementsByTagName() ...
35
+ function getElementsByTagName(xml2, name) {
34
36
  const array = [];
35
- const childNodes = xml.childNodes;
36
-
37
+ const childNodes = xml2.childNodes;
37
38
  for (let i = 0, l = childNodes.length; i < l; i++) {
38
39
  const child = childNodes[i];
39
-
40
40
  if (child.nodeName === name) {
41
41
  array.push(child);
42
42
  }
43
43
  }
44
-
45
44
  return array;
46
45
  }
47
-
48
- function parseStrings(text) {
49
- if (text.length === 0) return [];
50
- const parts = text.trim().split(/\s+/);
46
+ function parseStrings(text2) {
47
+ if (text2.length === 0)
48
+ return [];
49
+ const parts = text2.trim().split(/\s+/);
51
50
  const array = new Array(parts.length);
52
-
53
51
  for (let i = 0, l = parts.length; i < l; i++) {
54
52
  array[i] = parts[i];
55
53
  }
56
-
57
54
  return array;
58
55
  }
59
-
60
- function parseFloats(text) {
61
- if (text.length === 0) return [];
62
- const parts = text.trim().split(/\s+/);
56
+ function parseFloats(text2) {
57
+ if (text2.length === 0)
58
+ return [];
59
+ const parts = text2.trim().split(/\s+/);
63
60
  const array = new Array(parts.length);
64
-
65
61
  for (let i = 0, l = parts.length; i < l; i++) {
66
62
  array[i] = parseFloat(parts[i]);
67
63
  }
68
-
69
64
  return array;
70
65
  }
71
-
72
- function parseInts(text) {
73
- if (text.length === 0) return [];
74
- const parts = text.trim().split(/\s+/);
66
+ function parseInts(text2) {
67
+ if (text2.length === 0)
68
+ return [];
69
+ const parts = text2.trim().split(/\s+/);
75
70
  const array = new Array(parts.length);
76
-
77
71
  for (let i = 0, l = parts.length; i < l; i++) {
78
72
  array[i] = parseInt(parts[i]);
79
73
  }
80
-
81
74
  return array;
82
75
  }
83
-
84
- function parseId(text) {
85
- return text.substring(1);
76
+ function parseId(text2) {
77
+ return text2.substring(1);
86
78
  }
87
-
88
79
  function generateId() {
89
- return 'three_default_' + count++;
80
+ return "three_default_" + count++;
90
81
  }
91
-
92
82
  function isEmpty(object) {
93
83
  return Object.keys(object).length === 0;
94
- } // asset
95
-
96
-
97
- function parseAsset(xml) {
84
+ }
85
+ function parseAsset(xml2) {
98
86
  return {
99
- unit: parseAssetUnit(getElementsByTagName(xml, 'unit')[0]),
100
- upAxis: parseAssetUpAxis(getElementsByTagName(xml, 'up_axis')[0])
87
+ unit: parseAssetUnit(getElementsByTagName(xml2, "unit")[0]),
88
+ upAxis: parseAssetUpAxis(getElementsByTagName(xml2, "up_axis")[0])
101
89
  };
102
90
  }
103
-
104
- function parseAssetUnit(xml) {
105
- if (xml !== undefined && xml.hasAttribute('meter') === true) {
106
- return parseFloat(xml.getAttribute('meter'));
91
+ function parseAssetUnit(xml2) {
92
+ if (xml2 !== void 0 && xml2.hasAttribute("meter") === true) {
93
+ return parseFloat(xml2.getAttribute("meter"));
107
94
  } else {
108
- return 1; // default 1 meter
109
- }
110
- }
111
-
112
- function parseAssetUpAxis(xml) {
113
- return xml !== undefined ? xml.textContent : 'Y_UP';
114
- } // library
115
-
116
-
117
- function parseLibrary(xml, libraryName, nodeName, parser) {
118
- const library = getElementsByTagName(xml, libraryName)[0];
119
-
120
- if (library !== undefined) {
121
- const elements = getElementsByTagName(library, nodeName);
122
-
95
+ return 1;
96
+ }
97
+ }
98
+ function parseAssetUpAxis(xml2) {
99
+ return xml2 !== void 0 ? xml2.textContent : "Y_UP";
100
+ }
101
+ function parseLibrary(xml2, libraryName, nodeName, parser) {
102
+ const library2 = getElementsByTagName(xml2, libraryName)[0];
103
+ if (library2 !== void 0) {
104
+ const elements = getElementsByTagName(library2, nodeName);
123
105
  for (let i = 0; i < elements.length; i++) {
124
106
  parser(elements[i]);
125
107
  }
126
108
  }
127
109
  }
128
-
129
110
  function buildLibrary(data, builder) {
130
111
  for (const name in data) {
131
112
  const object = data[name];
132
113
  object.build = builder(data[name]);
133
114
  }
134
- } // get
135
-
136
-
115
+ }
137
116
  function getBuild(data, builder) {
138
- if (data.build !== undefined) return data.build;
117
+ if (data.build !== void 0)
118
+ return data.build;
139
119
  data.build = builder(data);
140
120
  return data.build;
141
- } // animation
142
-
143
-
144
- function parseAnimation(xml) {
121
+ }
122
+ function parseAnimation(xml2) {
145
123
  const data = {
146
124
  sources: {},
147
125
  samplers: {},
148
126
  channels: {}
149
127
  };
150
128
  let hasChildren = false;
151
-
152
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
153
- const child = xml.childNodes[i];
154
- if (child.nodeType !== 1) continue;
129
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
130
+ const child = xml2.childNodes[i];
131
+ if (child.nodeType !== 1)
132
+ continue;
155
133
  let id;
156
-
157
134
  switch (child.nodeName) {
158
- case 'source':
159
- id = child.getAttribute('id');
135
+ case "source":
136
+ id = child.getAttribute("id");
160
137
  data.sources[id] = parseSource(child);
161
138
  break;
162
-
163
- case 'sampler':
164
- id = child.getAttribute('id');
139
+ case "sampler":
140
+ id = child.getAttribute("id");
165
141
  data.samplers[id] = parseAnimationSampler(child);
166
142
  break;
167
-
168
- case 'channel':
169
- id = child.getAttribute('target');
143
+ case "channel":
144
+ id = child.getAttribute("target");
170
145
  data.channels[id] = parseAnimationChannel(child);
171
146
  break;
172
-
173
- case 'animation':
174
- // hierarchy of related animations
147
+ case "animation":
175
148
  parseAnimation(child);
176
149
  hasChildren = true;
177
150
  break;
178
-
179
151
  default:
180
152
  console.log(child);
181
153
  }
182
154
  }
183
-
184
155
  if (hasChildren === false) {
185
- // since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment
186
- library.animations[xml.getAttribute('id') || MathUtils.generateUUID()] = data;
156
+ library.animations[xml2.getAttribute("id") || THREE.MathUtils.generateUUID()] = data;
187
157
  }
188
158
  }
189
-
190
- function parseAnimationSampler(xml) {
159
+ function parseAnimationSampler(xml2) {
191
160
  const data = {
192
161
  inputs: {}
193
162
  };
194
-
195
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
196
- const child = xml.childNodes[i];
197
- if (child.nodeType !== 1) continue;
198
-
163
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
164
+ const child = xml2.childNodes[i];
165
+ if (child.nodeType !== 1)
166
+ continue;
199
167
  switch (child.nodeName) {
200
- case 'input':
201
- const id = parseId(child.getAttribute('source'));
202
- const semantic = child.getAttribute('semantic');
168
+ case "input":
169
+ const id = parseId(child.getAttribute("source"));
170
+ const semantic = child.getAttribute("semantic");
203
171
  data.inputs[semantic] = id;
204
172
  break;
205
173
  }
206
174
  }
207
-
208
175
  return data;
209
176
  }
210
-
211
- function parseAnimationChannel(xml) {
177
+ function parseAnimationChannel(xml2) {
212
178
  const data = {};
213
- const target = xml.getAttribute('target'); // parsing SID Addressing Syntax
214
-
215
- let parts = target.split('/');
179
+ const target = xml2.getAttribute("target");
180
+ let parts = target.split("/");
216
181
  const id = parts.shift();
217
- let sid = parts.shift(); // check selection syntax
218
-
219
- const arraySyntax = sid.indexOf('(') !== -1;
220
- const memberSyntax = sid.indexOf('.') !== -1;
221
-
182
+ let sid = parts.shift();
183
+ const arraySyntax = sid.indexOf("(") !== -1;
184
+ const memberSyntax = sid.indexOf(".") !== -1;
222
185
  if (memberSyntax) {
223
- // member selection access
224
- parts = sid.split('.');
186
+ parts = sid.split(".");
225
187
  sid = parts.shift();
226
188
  data.member = parts.shift();
227
189
  } else if (arraySyntax) {
228
- // array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.
229
- const indices = sid.split('(');
190
+ const indices = sid.split("(");
230
191
  sid = indices.shift();
231
-
232
192
  for (let i = 0; i < indices.length; i++) {
233
- indices[i] = parseInt(indices[i].replace(/\)/, ''));
193
+ indices[i] = parseInt(indices[i].replace(/\)/, ""));
234
194
  }
235
-
236
195
  data.indices = indices;
237
196
  }
238
-
239
197
  data.id = id;
240
198
  data.sid = sid;
241
199
  data.arraySyntax = arraySyntax;
242
200
  data.memberSyntax = memberSyntax;
243
- data.sampler = parseId(xml.getAttribute('source'));
201
+ data.sampler = parseId(xml2.getAttribute("source"));
244
202
  return data;
245
203
  }
246
-
247
204
  function buildAnimation(data) {
248
205
  const tracks = [];
249
206
  const channels = data.channels;
250
207
  const samplers = data.samplers;
251
208
  const sources = data.sources;
252
-
253
209
  for (const target in channels) {
254
210
  if (channels.hasOwnProperty(target)) {
255
211
  const channel = channels[target];
@@ -262,14 +218,11 @@ class ColladaLoader extends Loader {
262
218
  createKeyframeTracks(animation, tracks);
263
219
  }
264
220
  }
265
-
266
221
  return tracks;
267
222
  }
268
-
269
223
  function getAnimation(id) {
270
224
  return getBuild(library.animations[id], buildAnimation);
271
225
  }
272
-
273
226
  function buildAnimationChannel(channel, inputSource, outputSource) {
274
227
  const node = library.nodes[channel.id];
275
228
  const object3D = getNode(node.id);
@@ -277,16 +230,14 @@ class ColladaLoader extends Loader {
277
230
  const defaultMatrix = node.matrix.clone().transpose();
278
231
  let time, stride;
279
232
  let i, il, j, jl;
280
- const data = {}; // the collada spec allows the animation of data in various ways.
281
- // depending on the transform type (matrix, translate, rotate, scale), we execute different logic
282
-
233
+ const data = {};
283
234
  switch (transform) {
284
- case 'matrix':
235
+ case "matrix":
285
236
  for (i = 0, il = inputSource.array.length; i < il; i++) {
286
237
  time = inputSource.array[i];
287
238
  stride = i * outputSource.stride;
288
- if (data[time] === undefined) data[time] = {};
289
-
239
+ if (data[time] === void 0)
240
+ data[time] = {};
290
241
  if (channel.arraySyntax === true) {
291
242
  const value = outputSource.array[stride];
292
243
  const index = channel.indices[0] + 4 * channel.indices[1];
@@ -297,58 +248,41 @@ class ColladaLoader extends Loader {
297
248
  }
298
249
  }
299
250
  }
300
-
301
251
  break;
302
-
303
- case 'translate':
252
+ case "translate":
304
253
  console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform);
305
254
  break;
306
-
307
- case 'rotate':
255
+ case "rotate":
308
256
  console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform);
309
257
  break;
310
-
311
- case 'scale':
258
+ case "scale":
312
259
  console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform);
313
260
  break;
314
261
  }
315
-
316
262
  const keyframes = prepareAnimationData(data, defaultMatrix);
317
263
  const animation = {
318
264
  name: object3D.uuid,
319
- keyframes: keyframes
265
+ keyframes
320
266
  };
321
267
  return animation;
322
268
  }
323
-
324
269
  function prepareAnimationData(data, defaultMatrix) {
325
- const keyframes = []; // transfer data into a sortable array
326
-
270
+ const keyframes = [];
327
271
  for (const time in data) {
328
- keyframes.push({
329
- time: parseFloat(time),
330
- value: data[time]
331
- });
332
- } // ensure keyframes are sorted by time
333
-
334
-
335
- keyframes.sort(ascending); // now we clean up all animation data, so we can use them for keyframe tracks
336
-
272
+ keyframes.push({ time: parseFloat(time), value: data[time] });
273
+ }
274
+ keyframes.sort(ascending);
337
275
  for (let i = 0; i < 16; i++) {
338
276
  transformAnimationData(keyframes, i, defaultMatrix.elements[i]);
339
277
  }
340
-
341
- return keyframes; // array sort function
342
-
278
+ return keyframes;
343
279
  function ascending(a, b) {
344
280
  return a.time - b.time;
345
281
  }
346
282
  }
347
-
348
- const position = new Vector3();
349
- const scale = new Vector3();
350
- const quaternion = new Quaternion();
351
-
283
+ const position = new THREE.Vector3();
284
+ const scale = new THREE.Vector3();
285
+ const quaternion = new THREE.Quaternion();
352
286
  function createKeyframeTracks(animation, tracks) {
353
287
  const keyframes = animation.keyframes;
354
288
  const name = animation.name;
@@ -356,7 +290,6 @@ class ColladaLoader extends Loader {
356
290
  const positionData = [];
357
291
  const quaternionData = [];
358
292
  const scaleData = [];
359
-
360
293
  for (let i = 0, l = keyframes.length; i < l; i++) {
361
294
  const keyframe = keyframes[i];
362
295
  const time = keyframe.time;
@@ -368,274 +301,219 @@ class ColladaLoader extends Loader {
368
301
  quaternionData.push(quaternion.x, quaternion.y, quaternion.z, quaternion.w);
369
302
  scaleData.push(scale.x, scale.y, scale.z);
370
303
  }
371
-
372
- if (positionData.length > 0) tracks.push(new VectorKeyframeTrack(name + '.position', times, positionData));
373
-
304
+ if (positionData.length > 0)
305
+ tracks.push(new THREE.VectorKeyframeTrack(name + ".position", times, positionData));
374
306
  if (quaternionData.length > 0) {
375
- tracks.push(new QuaternionKeyframeTrack(name + '.quaternion', times, quaternionData));
307
+ tracks.push(new THREE.QuaternionKeyframeTrack(name + ".quaternion", times, quaternionData));
376
308
  }
377
-
378
- if (scaleData.length > 0) tracks.push(new VectorKeyframeTrack(name + '.scale', times, scaleData));
309
+ if (scaleData.length > 0)
310
+ tracks.push(new THREE.VectorKeyframeTrack(name + ".scale", times, scaleData));
379
311
  return tracks;
380
312
  }
381
-
382
313
  function transformAnimationData(keyframes, property, defaultValue) {
383
314
  let keyframe;
384
315
  let empty = true;
385
- let i, l; // check, if values of a property are missing in our keyframes
386
-
316
+ let i, l;
387
317
  for (i = 0, l = keyframes.length; i < l; i++) {
388
318
  keyframe = keyframes[i];
389
-
390
- if (keyframe.value[property] === undefined) {
391
- keyframe.value[property] = null; // mark as missing
319
+ if (keyframe.value[property] === void 0) {
320
+ keyframe.value[property] = null;
392
321
  } else {
393
322
  empty = false;
394
323
  }
395
324
  }
396
-
397
325
  if (empty === true) {
398
- // no values at all, so we set a default value
399
326
  for (i = 0, l = keyframes.length; i < l; i++) {
400
327
  keyframe = keyframes[i];
401
328
  keyframe.value[property] = defaultValue;
402
329
  }
403
330
  } else {
404
- // filling gaps
405
331
  createMissingKeyframes(keyframes, property);
406
332
  }
407
333
  }
408
-
409
334
  function createMissingKeyframes(keyframes, property) {
410
335
  let prev, next;
411
-
412
336
  for (let i = 0, l = keyframes.length; i < l; i++) {
413
337
  const keyframe = keyframes[i];
414
-
415
338
  if (keyframe.value[property] === null) {
416
339
  prev = getPrev(keyframes, i, property);
417
340
  next = getNext(keyframes, i, property);
418
-
419
341
  if (prev === null) {
420
342
  keyframe.value[property] = next.value[property];
421
343
  continue;
422
344
  }
423
-
424
345
  if (next === null) {
425
346
  keyframe.value[property] = prev.value[property];
426
347
  continue;
427
348
  }
428
-
429
349
  interpolate(keyframe, prev, next, property);
430
350
  }
431
351
  }
432
352
  }
433
-
434
353
  function getPrev(keyframes, i, property) {
435
354
  while (i >= 0) {
436
355
  const keyframe = keyframes[i];
437
- if (keyframe.value[property] !== null) return keyframe;
356
+ if (keyframe.value[property] !== null)
357
+ return keyframe;
438
358
  i--;
439
359
  }
440
-
441
360
  return null;
442
361
  }
443
-
444
362
  function getNext(keyframes, i, property) {
445
363
  while (i < keyframes.length) {
446
364
  const keyframe = keyframes[i];
447
- if (keyframe.value[property] !== null) return keyframe;
365
+ if (keyframe.value[property] !== null)
366
+ return keyframe;
448
367
  i++;
449
368
  }
450
-
451
369
  return null;
452
370
  }
453
-
454
371
  function interpolate(key, prev, next, property) {
455
372
  if (next.time - prev.time === 0) {
456
373
  key.value[property] = prev.value[property];
457
374
  return;
458
375
  }
459
-
460
376
  key.value[property] = (key.time - prev.time) * (next.value[property] - prev.value[property]) / (next.time - prev.time) + prev.value[property];
461
- } // animation clips
462
-
463
-
464
- function parseAnimationClip(xml) {
377
+ }
378
+ function parseAnimationClip(xml2) {
465
379
  const data = {
466
- name: xml.getAttribute('id') || 'default',
467
- start: parseFloat(xml.getAttribute('start') || 0),
468
- end: parseFloat(xml.getAttribute('end') || 0),
380
+ name: xml2.getAttribute("id") || "default",
381
+ start: parseFloat(xml2.getAttribute("start") || 0),
382
+ end: parseFloat(xml2.getAttribute("end") || 0),
469
383
  animations: []
470
384
  };
471
-
472
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
473
- const child = xml.childNodes[i];
474
- if (child.nodeType !== 1) continue;
475
-
385
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
386
+ const child = xml2.childNodes[i];
387
+ if (child.nodeType !== 1)
388
+ continue;
476
389
  switch (child.nodeName) {
477
- case 'instance_animation':
478
- data.animations.push(parseId(child.getAttribute('url')));
390
+ case "instance_animation":
391
+ data.animations.push(parseId(child.getAttribute("url")));
479
392
  break;
480
393
  }
481
394
  }
482
-
483
- library.clips[xml.getAttribute('id')] = data;
395
+ library.clips[xml2.getAttribute("id")] = data;
484
396
  }
485
-
486
397
  function buildAnimationClip(data) {
487
398
  const tracks = [];
488
399
  const name = data.name;
489
400
  const duration = data.end - data.start || -1;
490
- const animations = data.animations;
491
-
492
- for (let i = 0, il = animations.length; i < il; i++) {
493
- const animationTracks = getAnimation(animations[i]);
494
-
401
+ const animations2 = data.animations;
402
+ for (let i = 0, il = animations2.length; i < il; i++) {
403
+ const animationTracks = getAnimation(animations2[i]);
495
404
  for (let j = 0, jl = animationTracks.length; j < jl; j++) {
496
405
  tracks.push(animationTracks[j]);
497
406
  }
498
407
  }
499
-
500
- return new AnimationClip(name, duration, tracks);
408
+ return new THREE.AnimationClip(name, duration, tracks);
501
409
  }
502
-
503
410
  function getAnimationClip(id) {
504
411
  return getBuild(library.clips[id], buildAnimationClip);
505
- } // controller
506
-
507
-
508
- function parseController(xml) {
412
+ }
413
+ function parseController(xml2) {
509
414
  const data = {};
510
-
511
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
512
- const child = xml.childNodes[i];
513
- if (child.nodeType !== 1) continue;
514
-
415
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
416
+ const child = xml2.childNodes[i];
417
+ if (child.nodeType !== 1)
418
+ continue;
515
419
  switch (child.nodeName) {
516
- case 'skin':
517
- // there is exactly one skin per controller
518
- data.id = parseId(child.getAttribute('source'));
420
+ case "skin":
421
+ data.id = parseId(child.getAttribute("source"));
519
422
  data.skin = parseSkin(child);
520
423
  break;
521
-
522
- case 'morph':
523
- data.id = parseId(child.getAttribute('source'));
524
- console.warn('THREE.ColladaLoader: Morph target animation not supported yet.');
424
+ case "morph":
425
+ data.id = parseId(child.getAttribute("source"));
426
+ console.warn("THREE.ColladaLoader: Morph target animation not supported yet.");
525
427
  break;
526
428
  }
527
429
  }
528
-
529
- library.controllers[xml.getAttribute('id')] = data;
430
+ library.controllers[xml2.getAttribute("id")] = data;
530
431
  }
531
-
532
- function parseSkin(xml) {
432
+ function parseSkin(xml2) {
533
433
  const data = {
534
434
  sources: {}
535
435
  };
536
-
537
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
538
- const child = xml.childNodes[i];
539
- if (child.nodeType !== 1) continue;
540
-
436
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
437
+ const child = xml2.childNodes[i];
438
+ if (child.nodeType !== 1)
439
+ continue;
541
440
  switch (child.nodeName) {
542
- case 'bind_shape_matrix':
441
+ case "bind_shape_matrix":
543
442
  data.bindShapeMatrix = parseFloats(child.textContent);
544
443
  break;
545
-
546
- case 'source':
547
- const id = child.getAttribute('id');
444
+ case "source":
445
+ const id = child.getAttribute("id");
548
446
  data.sources[id] = parseSource(child);
549
447
  break;
550
-
551
- case 'joints':
448
+ case "joints":
552
449
  data.joints = parseJoints(child);
553
450
  break;
554
-
555
- case 'vertex_weights':
451
+ case "vertex_weights":
556
452
  data.vertexWeights = parseVertexWeights(child);
557
453
  break;
558
454
  }
559
455
  }
560
-
561
456
  return data;
562
457
  }
563
-
564
- function parseJoints(xml) {
458
+ function parseJoints(xml2) {
565
459
  const data = {
566
460
  inputs: {}
567
461
  };
568
-
569
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
570
- const child = xml.childNodes[i];
571
- if (child.nodeType !== 1) continue;
572
-
462
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
463
+ const child = xml2.childNodes[i];
464
+ if (child.nodeType !== 1)
465
+ continue;
573
466
  switch (child.nodeName) {
574
- case 'input':
575
- const semantic = child.getAttribute('semantic');
576
- const id = parseId(child.getAttribute('source'));
467
+ case "input":
468
+ const semantic = child.getAttribute("semantic");
469
+ const id = parseId(child.getAttribute("source"));
577
470
  data.inputs[semantic] = id;
578
471
  break;
579
472
  }
580
473
  }
581
-
582
474
  return data;
583
475
  }
584
-
585
- function parseVertexWeights(xml) {
476
+ function parseVertexWeights(xml2) {
586
477
  const data = {
587
478
  inputs: {}
588
479
  };
589
-
590
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
591
- const child = xml.childNodes[i];
592
- if (child.nodeType !== 1) continue;
593
-
480
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
481
+ const child = xml2.childNodes[i];
482
+ if (child.nodeType !== 1)
483
+ continue;
594
484
  switch (child.nodeName) {
595
- case 'input':
596
- const semantic = child.getAttribute('semantic');
597
- const id = parseId(child.getAttribute('source'));
598
- const offset = parseInt(child.getAttribute('offset'));
599
- data.inputs[semantic] = {
600
- id: id,
601
- offset: offset
602
- };
485
+ case "input":
486
+ const semantic = child.getAttribute("semantic");
487
+ const id = parseId(child.getAttribute("source"));
488
+ const offset = parseInt(child.getAttribute("offset"));
489
+ data.inputs[semantic] = { id, offset };
603
490
  break;
604
-
605
- case 'vcount':
491
+ case "vcount":
606
492
  data.vcount = parseInts(child.textContent);
607
493
  break;
608
-
609
- case 'v':
494
+ case "v":
610
495
  data.v = parseInts(child.textContent);
611
496
  break;
612
497
  }
613
498
  }
614
-
615
499
  return data;
616
500
  }
617
-
618
501
  function buildController(data) {
619
502
  const build = {
620
503
  id: data.id
621
504
  };
622
505
  const geometry = library.geometries[build.id];
623
-
624
- if (data.skin !== undefined) {
625
- build.skin = buildSkin(data.skin); // we enhance the 'sources' property of the corresponding geometry with our skin data
626
-
506
+ if (data.skin !== void 0) {
507
+ build.skin = buildSkin(data.skin);
627
508
  geometry.sources.skinIndices = build.skin.indices;
628
509
  geometry.sources.skinWeights = build.skin.weights;
629
510
  }
630
-
631
511
  return build;
632
512
  }
633
-
634
513
  function buildSkin(data) {
635
514
  const BONE_LIMIT = 4;
636
515
  const build = {
637
516
  joints: [],
638
- // this must be an array to preserve the joint order
639
517
  indices: {
640
518
  array: [],
641
519
  stride: BONE_LIMIT
@@ -655,33 +533,21 @@ class ColladaLoader extends Loader {
655
533
  const inverseSource = data.sources[data.joints.inputs.INV_BIND_MATRIX];
656
534
  const weights = sources[vertexWeights.inputs.WEIGHT.id].array;
657
535
  let stride = 0;
658
- let i, j, l; // procces skin data for each vertex
659
-
536
+ let i, j, l;
660
537
  for (i = 0, l = vcount.length; i < l; i++) {
661
- const jointCount = vcount[i]; // this is the amount of joints that affect a single vertex
662
-
538
+ const jointCount = vcount[i];
663
539
  const vertexSkinData = [];
664
-
665
540
  for (j = 0; j < jointCount; j++) {
666
541
  const skinIndex = v[stride + jointOffset];
667
542
  const weightId = v[stride + weightOffset];
668
543
  const skinWeight = weights[weightId];
669
- vertexSkinData.push({
670
- index: skinIndex,
671
- weight: skinWeight
672
- });
544
+ vertexSkinData.push({ index: skinIndex, weight: skinWeight });
673
545
  stride += 2;
674
- } // we sort the joints in descending order based on the weights.
675
- // this ensures, we only procced the most important joints of the vertex
676
-
677
-
678
- vertexSkinData.sort(descending); // now we provide for each vertex a set of four index and weight values.
679
- // the order of the skin data matches the order of vertices
680
-
546
+ }
547
+ vertexSkinData.sort(descending);
681
548
  for (j = 0; j < BONE_LIMIT; j++) {
682
549
  const d = vertexSkinData[j];
683
-
684
- if (d !== undefined) {
550
+ if (d !== void 0) {
685
551
  build.indices.array.push(d.index);
686
552
  build.weights.array.push(d.weight);
687
553
  } else {
@@ -689,468 +555,377 @@ class ColladaLoader extends Loader {
689
555
  build.weights.array.push(0);
690
556
  }
691
557
  }
692
- } // setup bind matrix
693
-
694
-
558
+ }
695
559
  if (data.bindShapeMatrix) {
696
- build.bindMatrix = new Matrix4().fromArray(data.bindShapeMatrix).transpose();
560
+ build.bindMatrix = new THREE.Matrix4().fromArray(data.bindShapeMatrix).transpose();
697
561
  } else {
698
- build.bindMatrix = new Matrix4().identity();
699
- } // process bones and inverse bind matrix data
700
-
701
-
562
+ build.bindMatrix = new THREE.Matrix4().identity();
563
+ }
702
564
  for (i = 0, l = jointSource.array.length; i < l; i++) {
703
565
  const name = jointSource.array[i];
704
- const boneInverse = new Matrix4().fromArray(inverseSource.array, i * inverseSource.stride).transpose();
705
- build.joints.push({
706
- name: name,
707
- boneInverse: boneInverse
708
- });
566
+ const boneInverse = new THREE.Matrix4().fromArray(inverseSource.array, i * inverseSource.stride).transpose();
567
+ build.joints.push({ name, boneInverse });
709
568
  }
710
-
711
- return build; // array sort function
712
-
569
+ return build;
713
570
  function descending(a, b) {
714
571
  return b.weight - a.weight;
715
572
  }
716
573
  }
717
-
718
574
  function getController(id) {
719
575
  return getBuild(library.controllers[id], buildController);
720
- } // image
721
-
722
-
723
- function parseImage(xml) {
576
+ }
577
+ function parseImage(xml2) {
724
578
  const data = {
725
- init_from: getElementsByTagName(xml, 'init_from')[0].textContent
579
+ init_from: getElementsByTagName(xml2, "init_from")[0].textContent
726
580
  };
727
- library.images[xml.getAttribute('id')] = data;
581
+ library.images[xml2.getAttribute("id")] = data;
728
582
  }
729
-
730
583
  function buildImage(data) {
731
- if (data.build !== undefined) return data.build;
584
+ if (data.build !== void 0)
585
+ return data.build;
732
586
  return data.init_from;
733
587
  }
734
-
735
588
  function getImage(id) {
736
589
  const data = library.images[id];
737
-
738
- if (data !== undefined) {
590
+ if (data !== void 0) {
739
591
  return getBuild(data, buildImage);
740
592
  }
741
-
742
593
  console.warn("THREE.ColladaLoader: Couldn't find image with ID:", id);
743
594
  return null;
744
- } // effect
745
-
746
-
747
- function parseEffect(xml) {
595
+ }
596
+ function parseEffect(xml2) {
748
597
  const data = {};
749
-
750
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
751
- const child = xml.childNodes[i];
752
- if (child.nodeType !== 1) continue;
753
-
598
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
599
+ const child = xml2.childNodes[i];
600
+ if (child.nodeType !== 1)
601
+ continue;
754
602
  switch (child.nodeName) {
755
- case 'profile_COMMON':
603
+ case "profile_COMMON":
756
604
  data.profile = parseEffectProfileCOMMON(child);
757
605
  break;
758
606
  }
759
607
  }
760
-
761
- library.effects[xml.getAttribute('id')] = data;
608
+ library.effects[xml2.getAttribute("id")] = data;
762
609
  }
763
-
764
- function parseEffectProfileCOMMON(xml) {
610
+ function parseEffectProfileCOMMON(xml2) {
765
611
  const data = {
766
612
  surfaces: {},
767
613
  samplers: {}
768
614
  };
769
-
770
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
771
- const child = xml.childNodes[i];
772
- if (child.nodeType !== 1) continue;
773
-
615
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
616
+ const child = xml2.childNodes[i];
617
+ if (child.nodeType !== 1)
618
+ continue;
774
619
  switch (child.nodeName) {
775
- case 'newparam':
620
+ case "newparam":
776
621
  parseEffectNewparam(child, data);
777
622
  break;
778
-
779
- case 'technique':
623
+ case "technique":
780
624
  data.technique = parseEffectTechnique(child);
781
625
  break;
782
-
783
- case 'extra':
626
+ case "extra":
784
627
  data.extra = parseEffectExtra(child);
785
628
  break;
786
629
  }
787
630
  }
788
-
789
631
  return data;
790
632
  }
791
-
792
- function parseEffectNewparam(xml, data) {
793
- const sid = xml.getAttribute('sid');
794
-
795
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
796
- const child = xml.childNodes[i];
797
- if (child.nodeType !== 1) continue;
798
-
633
+ function parseEffectNewparam(xml2, data) {
634
+ const sid = xml2.getAttribute("sid");
635
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
636
+ const child = xml2.childNodes[i];
637
+ if (child.nodeType !== 1)
638
+ continue;
799
639
  switch (child.nodeName) {
800
- case 'surface':
640
+ case "surface":
801
641
  data.surfaces[sid] = parseEffectSurface(child);
802
642
  break;
803
-
804
- case 'sampler2D':
643
+ case "sampler2D":
805
644
  data.samplers[sid] = parseEffectSampler(child);
806
645
  break;
807
646
  }
808
647
  }
809
648
  }
810
-
811
- function parseEffectSurface(xml) {
649
+ function parseEffectSurface(xml2) {
812
650
  const data = {};
813
-
814
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
815
- const child = xml.childNodes[i];
816
- if (child.nodeType !== 1) continue;
817
-
651
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
652
+ const child = xml2.childNodes[i];
653
+ if (child.nodeType !== 1)
654
+ continue;
818
655
  switch (child.nodeName) {
819
- case 'init_from':
656
+ case "init_from":
820
657
  data.init_from = child.textContent;
821
658
  break;
822
659
  }
823
660
  }
824
-
825
661
  return data;
826
662
  }
827
-
828
- function parseEffectSampler(xml) {
663
+ function parseEffectSampler(xml2) {
829
664
  const data = {};
830
-
831
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
832
- const child = xml.childNodes[i];
833
- if (child.nodeType !== 1) continue;
834
-
665
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
666
+ const child = xml2.childNodes[i];
667
+ if (child.nodeType !== 1)
668
+ continue;
835
669
  switch (child.nodeName) {
836
- case 'source':
670
+ case "source":
837
671
  data.source = child.textContent;
838
672
  break;
839
673
  }
840
674
  }
841
-
842
675
  return data;
843
676
  }
844
-
845
- function parseEffectTechnique(xml) {
677
+ function parseEffectTechnique(xml2) {
846
678
  const data = {};
847
-
848
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
849
- const child = xml.childNodes[i];
850
- if (child.nodeType !== 1) continue;
851
-
679
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
680
+ const child = xml2.childNodes[i];
681
+ if (child.nodeType !== 1)
682
+ continue;
852
683
  switch (child.nodeName) {
853
- case 'constant':
854
- case 'lambert':
855
- case 'blinn':
856
- case 'phong':
684
+ case "constant":
685
+ case "lambert":
686
+ case "blinn":
687
+ case "phong":
857
688
  data.type = child.nodeName;
858
689
  data.parameters = parseEffectParameters(child);
859
690
  break;
860
-
861
- case 'extra':
691
+ case "extra":
862
692
  data.extra = parseEffectExtra(child);
863
693
  break;
864
694
  }
865
695
  }
866
-
867
696
  return data;
868
697
  }
869
-
870
- function parseEffectParameters(xml) {
698
+ function parseEffectParameters(xml2) {
871
699
  const data = {};
872
-
873
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
874
- const child = xml.childNodes[i];
875
- if (child.nodeType !== 1) continue;
876
-
700
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
701
+ const child = xml2.childNodes[i];
702
+ if (child.nodeType !== 1)
703
+ continue;
877
704
  switch (child.nodeName) {
878
- case 'emission':
879
- case 'diffuse':
880
- case 'specular':
881
- case 'bump':
882
- case 'ambient':
883
- case 'shininess':
884
- case 'transparency':
705
+ case "emission":
706
+ case "diffuse":
707
+ case "specular":
708
+ case "bump":
709
+ case "ambient":
710
+ case "shininess":
711
+ case "transparency":
885
712
  data[child.nodeName] = parseEffectParameter(child);
886
713
  break;
887
-
888
- case 'transparent':
714
+ case "transparent":
889
715
  data[child.nodeName] = {
890
- opaque: child.hasAttribute('opaque') ? child.getAttribute('opaque') : 'A_ONE',
716
+ opaque: child.hasAttribute("opaque") ? child.getAttribute("opaque") : "A_ONE",
891
717
  data: parseEffectParameter(child)
892
718
  };
893
719
  break;
894
720
  }
895
721
  }
896
-
897
722
  return data;
898
723
  }
899
-
900
- function parseEffectParameter(xml) {
724
+ function parseEffectParameter(xml2) {
901
725
  const data = {};
902
-
903
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
904
- const child = xml.childNodes[i];
905
- if (child.nodeType !== 1) continue;
906
-
726
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
727
+ const child = xml2.childNodes[i];
728
+ if (child.nodeType !== 1)
729
+ continue;
907
730
  switch (child.nodeName) {
908
- case 'color':
731
+ case "color":
909
732
  data[child.nodeName] = parseFloats(child.textContent);
910
733
  break;
911
-
912
- case 'float':
734
+ case "float":
913
735
  data[child.nodeName] = parseFloat(child.textContent);
914
736
  break;
915
-
916
- case 'texture':
917
- data[child.nodeName] = {
918
- id: child.getAttribute('texture'),
919
- extra: parseEffectParameterTexture(child)
920
- };
737
+ case "texture":
738
+ data[child.nodeName] = { id: child.getAttribute("texture"), extra: parseEffectParameterTexture(child) };
921
739
  break;
922
740
  }
923
741
  }
924
-
925
742
  return data;
926
743
  }
927
-
928
- function parseEffectParameterTexture(xml) {
744
+ function parseEffectParameterTexture(xml2) {
929
745
  const data = {
930
746
  technique: {}
931
747
  };
932
-
933
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
934
- const child = xml.childNodes[i];
935
- if (child.nodeType !== 1) continue;
936
-
748
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
749
+ const child = xml2.childNodes[i];
750
+ if (child.nodeType !== 1)
751
+ continue;
937
752
  switch (child.nodeName) {
938
- case 'extra':
753
+ case "extra":
939
754
  parseEffectParameterTextureExtra(child, data);
940
755
  break;
941
756
  }
942
757
  }
943
-
944
758
  return data;
945
759
  }
946
-
947
- function parseEffectParameterTextureExtra(xml, data) {
948
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
949
- const child = xml.childNodes[i];
950
- if (child.nodeType !== 1) continue;
951
-
760
+ function parseEffectParameterTextureExtra(xml2, data) {
761
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
762
+ const child = xml2.childNodes[i];
763
+ if (child.nodeType !== 1)
764
+ continue;
952
765
  switch (child.nodeName) {
953
- case 'technique':
766
+ case "technique":
954
767
  parseEffectParameterTextureExtraTechnique(child, data);
955
768
  break;
956
769
  }
957
770
  }
958
771
  }
959
-
960
- function parseEffectParameterTextureExtraTechnique(xml, data) {
961
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
962
- const child = xml.childNodes[i];
963
- if (child.nodeType !== 1) continue;
964
-
772
+ function parseEffectParameterTextureExtraTechnique(xml2, data) {
773
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
774
+ const child = xml2.childNodes[i];
775
+ if (child.nodeType !== 1)
776
+ continue;
965
777
  switch (child.nodeName) {
966
- case 'repeatU':
967
- case 'repeatV':
968
- case 'offsetU':
969
- case 'offsetV':
778
+ case "repeatU":
779
+ case "repeatV":
780
+ case "offsetU":
781
+ case "offsetV":
970
782
  data.technique[child.nodeName] = parseFloat(child.textContent);
971
783
  break;
972
-
973
- case 'wrapU':
974
- case 'wrapV':
975
- // some files have values for wrapU/wrapV which become NaN via parseInt
976
- if (child.textContent.toUpperCase() === 'TRUE') {
784
+ case "wrapU":
785
+ case "wrapV":
786
+ if (child.textContent.toUpperCase() === "TRUE") {
977
787
  data.technique[child.nodeName] = 1;
978
- } else if (child.textContent.toUpperCase() === 'FALSE') {
788
+ } else if (child.textContent.toUpperCase() === "FALSE") {
979
789
  data.technique[child.nodeName] = 0;
980
790
  } else {
981
791
  data.technique[child.nodeName] = parseInt(child.textContent);
982
792
  }
983
-
984
793
  break;
985
-
986
- case 'bump':
794
+ case "bump":
987
795
  data[child.nodeName] = parseEffectExtraTechniqueBump(child);
988
796
  break;
989
797
  }
990
798
  }
991
799
  }
992
-
993
- function parseEffectExtra(xml) {
800
+ function parseEffectExtra(xml2) {
994
801
  const data = {};
995
-
996
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
997
- const child = xml.childNodes[i];
998
- if (child.nodeType !== 1) continue;
999
-
802
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
803
+ const child = xml2.childNodes[i];
804
+ if (child.nodeType !== 1)
805
+ continue;
1000
806
  switch (child.nodeName) {
1001
- case 'technique':
807
+ case "technique":
1002
808
  data.technique = parseEffectExtraTechnique(child);
1003
809
  break;
1004
810
  }
1005
811
  }
1006
-
1007
812
  return data;
1008
813
  }
1009
-
1010
- function parseEffectExtraTechnique(xml) {
814
+ function parseEffectExtraTechnique(xml2) {
1011
815
  const data = {};
1012
-
1013
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
1014
- const child = xml.childNodes[i];
1015
- if (child.nodeType !== 1) continue;
1016
-
816
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
817
+ const child = xml2.childNodes[i];
818
+ if (child.nodeType !== 1)
819
+ continue;
1017
820
  switch (child.nodeName) {
1018
- case 'double_sided':
821
+ case "double_sided":
1019
822
  data[child.nodeName] = parseInt(child.textContent);
1020
823
  break;
1021
-
1022
- case 'bump':
824
+ case "bump":
1023
825
  data[child.nodeName] = parseEffectExtraTechniqueBump(child);
1024
826
  break;
1025
827
  }
1026
828
  }
1027
-
1028
829
  return data;
1029
830
  }
1030
-
1031
- function parseEffectExtraTechniqueBump(xml) {
831
+ function parseEffectExtraTechniqueBump(xml2) {
1032
832
  var data = {};
1033
-
1034
- for (var i = 0, l = xml.childNodes.length; i < l; i++) {
1035
- var child = xml.childNodes[i];
1036
- if (child.nodeType !== 1) continue;
1037
-
833
+ for (var i = 0, l = xml2.childNodes.length; i < l; i++) {
834
+ var child = xml2.childNodes[i];
835
+ if (child.nodeType !== 1)
836
+ continue;
1038
837
  switch (child.nodeName) {
1039
- case 'texture':
838
+ case "texture":
1040
839
  data[child.nodeName] = {
1041
- id: child.getAttribute('texture'),
1042
- texcoord: child.getAttribute('texcoord'),
840
+ id: child.getAttribute("texture"),
841
+ texcoord: child.getAttribute("texcoord"),
1043
842
  extra: parseEffectParameterTexture(child)
1044
843
  };
1045
844
  break;
1046
845
  }
1047
846
  }
1048
-
1049
847
  return data;
1050
848
  }
1051
-
1052
849
  function buildEffect(data) {
1053
850
  return data;
1054
851
  }
1055
-
1056
852
  function getEffect(id) {
1057
853
  return getBuild(library.effects[id], buildEffect);
1058
- } // material
1059
-
1060
-
1061
- function parseMaterial(xml) {
854
+ }
855
+ function parseMaterial(xml2) {
1062
856
  const data = {
1063
- name: xml.getAttribute('name')
857
+ name: xml2.getAttribute("name")
1064
858
  };
1065
-
1066
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
1067
- const child = xml.childNodes[i];
1068
- if (child.nodeType !== 1) continue;
1069
-
859
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
860
+ const child = xml2.childNodes[i];
861
+ if (child.nodeType !== 1)
862
+ continue;
1070
863
  switch (child.nodeName) {
1071
- case 'instance_effect':
1072
- data.url = parseId(child.getAttribute('url'));
864
+ case "instance_effect":
865
+ data.url = parseId(child.getAttribute("url"));
1073
866
  break;
1074
867
  }
1075
868
  }
1076
-
1077
- library.materials[xml.getAttribute('id')] = data;
869
+ library.materials[xml2.getAttribute("id")] = data;
1078
870
  }
1079
-
1080
871
  function getTextureLoader(image) {
1081
872
  let loader;
1082
- let extension = image.slice((image.lastIndexOf('.') - 1 >>> 0) + 2); // http://www.jstips.co/en/javascript/get-file-extension/
1083
-
873
+ let extension = image.slice((image.lastIndexOf(".") - 1 >>> 0) + 2);
1084
874
  extension = extension.toLowerCase();
1085
-
1086
875
  switch (extension) {
1087
- case 'tga':
876
+ case "tga":
1088
877
  loader = tgaLoader;
1089
878
  break;
1090
-
1091
879
  default:
1092
880
  loader = textureLoader;
1093
881
  }
1094
-
1095
882
  return loader;
1096
883
  }
1097
-
1098
884
  function buildMaterial(data) {
1099
885
  const effect = getEffect(data.url);
1100
886
  const technique = effect.profile.technique;
1101
887
  let material;
1102
-
1103
888
  switch (technique.type) {
1104
- case 'phong':
1105
- case 'blinn':
1106
- material = new MeshPhongMaterial();
889
+ case "phong":
890
+ case "blinn":
891
+ material = new THREE.MeshPhongMaterial();
1107
892
  break;
1108
-
1109
- case 'lambert':
1110
- material = new MeshLambertMaterial();
893
+ case "lambert":
894
+ material = new THREE.MeshLambertMaterial();
1111
895
  break;
1112
-
1113
896
  default:
1114
- material = new MeshBasicMaterial();
897
+ material = new THREE.MeshBasicMaterial();
1115
898
  break;
1116
899
  }
1117
-
1118
- material.name = data.name || '';
1119
-
900
+ material.name = data.name || "";
1120
901
  function getTexture(textureObject) {
1121
902
  const sampler = effect.profile.samplers[textureObject.id];
1122
- let image = null; // get image
1123
-
1124
- if (sampler !== undefined) {
903
+ let image = null;
904
+ if (sampler !== void 0) {
1125
905
  const surface = effect.profile.surfaces[sampler.source];
1126
906
  image = getImage(surface.init_from);
1127
907
  } else {
1128
- console.warn('THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).');
908
+ console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).");
1129
909
  image = getImage(textureObject.id);
1130
- } // create texture if image is avaiable
1131
-
1132
-
910
+ }
1133
911
  if (image !== null) {
1134
912
  const loader = getTextureLoader(image);
1135
-
1136
- if (loader !== undefined) {
913
+ if (loader !== void 0) {
1137
914
  const texture = loader.load(image);
1138
915
  const extra = textureObject.extra;
1139
-
1140
- if (extra !== undefined && extra.technique !== undefined && isEmpty(extra.technique) === false) {
1141
- const technique = extra.technique;
1142
- texture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping;
1143
- texture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping;
1144
- texture.offset.set(technique.offsetU || 0, technique.offsetV || 0);
1145
- texture.repeat.set(technique.repeatU || 1, technique.repeatV || 1);
916
+ if (extra !== void 0 && extra.technique !== void 0 && isEmpty(extra.technique) === false) {
917
+ const technique2 = extra.technique;
918
+ texture.wrapS = technique2.wrapU ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
919
+ texture.wrapT = technique2.wrapV ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
920
+ texture.offset.set(technique2.offsetU || 0, technique2.offsetV || 0);
921
+ texture.repeat.set(technique2.repeatU || 1, technique2.repeatV || 1);
1146
922
  } else {
1147
- texture.wrapS = RepeatWrapping;
1148
- texture.wrapT = RepeatWrapping;
923
+ texture.wrapS = THREE.RepeatWrapping;
924
+ texture.wrapT = THREE.RepeatWrapping;
1149
925
  }
1150
-
1151
926
  return texture;
1152
927
  } else {
1153
- console.warn('THREE.ColladaLoader: Loader for texture %s not found.', image);
928
+ console.warn("THREE.ColladaLoader: Loader for texture %s not found.", image);
1154
929
  return null;
1155
930
  }
1156
931
  } else {
@@ -1158,737 +933,582 @@ class ColladaLoader extends Loader {
1158
933
  return null;
1159
934
  }
1160
935
  }
1161
-
1162
936
  const parameters = technique.parameters;
1163
-
1164
937
  for (const key in parameters) {
1165
938
  const parameter = parameters[key];
1166
-
1167
939
  switch (key) {
1168
- case 'diffuse':
1169
- if (parameter.color) material.color.fromArray(parameter.color);
1170
- if (parameter.texture) material.map = getTexture(parameter.texture);
1171
- break;
1172
-
1173
- case 'specular':
1174
- if (parameter.color && material.specular) material.specular.fromArray(parameter.color);
1175
- if (parameter.texture) material.specularMap = getTexture(parameter.texture);
1176
- break;
1177
-
1178
- case 'bump':
1179
- if (parameter.texture) material.normalMap = getTexture(parameter.texture);
1180
- break;
1181
-
1182
- case 'ambient':
1183
- if (parameter.texture) material.lightMap = getTexture(parameter.texture);
1184
- break;
1185
-
1186
- case 'shininess':
1187
- if (parameter.float && material.shininess) material.shininess = parameter.float;
1188
- break;
1189
-
1190
- case 'emission':
1191
- if (parameter.color && material.emissive) material.emissive.fromArray(parameter.color);
1192
- if (parameter.texture) material.emissiveMap = getTexture(parameter.texture);
1193
- break;
1194
- }
1195
- } //
1196
-
1197
-
1198
- let transparent = parameters['transparent'];
1199
- let transparency = parameters['transparency']; // <transparency> does not exist but <transparent>
1200
-
1201
- if (transparency === undefined && transparent) {
940
+ case "diffuse":
941
+ if (parameter.color)
942
+ material.color.fromArray(parameter.color);
943
+ if (parameter.texture)
944
+ material.map = getTexture(parameter.texture);
945
+ break;
946
+ case "specular":
947
+ if (parameter.color && material.specular)
948
+ material.specular.fromArray(parameter.color);
949
+ if (parameter.texture)
950
+ material.specularMap = getTexture(parameter.texture);
951
+ break;
952
+ case "bump":
953
+ if (parameter.texture)
954
+ material.normalMap = getTexture(parameter.texture);
955
+ break;
956
+ case "ambient":
957
+ if (parameter.texture)
958
+ material.lightMap = getTexture(parameter.texture);
959
+ break;
960
+ case "shininess":
961
+ if (parameter.float && material.shininess)
962
+ material.shininess = parameter.float;
963
+ break;
964
+ case "emission":
965
+ if (parameter.color && material.emissive)
966
+ material.emissive.fromArray(parameter.color);
967
+ if (parameter.texture)
968
+ material.emissiveMap = getTexture(parameter.texture);
969
+ break;
970
+ }
971
+ }
972
+ let transparent = parameters["transparent"];
973
+ let transparency = parameters["transparency"];
974
+ if (transparency === void 0 && transparent) {
1202
975
  transparency = {
1203
976
  float: 1
1204
977
  };
1205
- } // <transparent> does not exist but <transparency>
1206
-
1207
-
1208
- if (transparent === undefined && transparency) {
978
+ }
979
+ if (transparent === void 0 && transparency) {
1209
980
  transparent = {
1210
- opaque: 'A_ONE',
981
+ opaque: "A_ONE",
1211
982
  data: {
1212
983
  color: [1, 1, 1, 1]
1213
984
  }
1214
985
  };
1215
986
  }
1216
-
1217
987
  if (transparent && transparency) {
1218
- // handle case if a texture exists but no color
1219
988
  if (transparent.data.texture) {
1220
- // we do not set an alpha map (see #13792)
1221
989
  material.transparent = true;
1222
990
  } else {
1223
991
  const color = transparent.data.color;
1224
-
1225
992
  switch (transparent.opaque) {
1226
- case 'A_ONE':
993
+ case "A_ONE":
1227
994
  material.opacity = color[3] * transparency.float;
1228
995
  break;
1229
-
1230
- case 'RGB_ZERO':
996
+ case "RGB_ZERO":
1231
997
  material.opacity = 1 - color[0] * transparency.float;
1232
998
  break;
1233
-
1234
- case 'A_ZERO':
999
+ case "A_ZERO":
1235
1000
  material.opacity = 1 - color[3] * transparency.float;
1236
1001
  break;
1237
-
1238
- case 'RGB_ONE':
1002
+ case "RGB_ONE":
1239
1003
  material.opacity = color[0] * transparency.float;
1240
1004
  break;
1241
-
1242
1005
  default:
1243
1006
  console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.', transparent.opaque);
1244
1007
  }
1245
-
1246
- if (material.opacity < 1) material.transparent = true;
1008
+ if (material.opacity < 1)
1009
+ material.transparent = true;
1247
1010
  }
1248
- } //
1249
-
1250
-
1251
- if (technique.extra !== undefined && technique.extra.technique !== undefined) {
1011
+ }
1012
+ if (technique.extra !== void 0 && technique.extra.technique !== void 0) {
1252
1013
  const techniques = technique.extra.technique;
1253
-
1254
1014
  for (const k in techniques) {
1255
1015
  const v = techniques[k];
1256
-
1257
1016
  switch (k) {
1258
- case 'double_sided':
1259
- material.side = v === 1 ? DoubleSide : FrontSide;
1017
+ case "double_sided":
1018
+ material.side = v === 1 ? THREE.DoubleSide : THREE.FrontSide;
1260
1019
  break;
1261
-
1262
- case 'bump':
1020
+ case "bump":
1263
1021
  material.normalMap = getTexture(v.texture);
1264
- material.normalScale = new Vector2(1, 1);
1022
+ material.normalScale = new THREE.Vector2(1, 1);
1265
1023
  break;
1266
1024
  }
1267
1025
  }
1268
1026
  }
1269
-
1270
1027
  return material;
1271
1028
  }
1272
-
1273
1029
  function getMaterial(id) {
1274
1030
  return getBuild(library.materials[id], buildMaterial);
1275
- } // camera
1276
-
1277
-
1278
- function parseCamera(xml) {
1031
+ }
1032
+ function parseCamera(xml2) {
1279
1033
  const data = {
1280
- name: xml.getAttribute('name')
1034
+ name: xml2.getAttribute("name")
1281
1035
  };
1282
-
1283
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
1284
- const child = xml.childNodes[i];
1285
- if (child.nodeType !== 1) continue;
1286
-
1036
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
1037
+ const child = xml2.childNodes[i];
1038
+ if (child.nodeType !== 1)
1039
+ continue;
1287
1040
  switch (child.nodeName) {
1288
- case 'optics':
1041
+ case "optics":
1289
1042
  data.optics = parseCameraOptics(child);
1290
1043
  break;
1291
1044
  }
1292
1045
  }
1293
-
1294
- library.cameras[xml.getAttribute('id')] = data;
1046
+ library.cameras[xml2.getAttribute("id")] = data;
1295
1047
  }
1296
-
1297
- function parseCameraOptics(xml) {
1298
- for (let i = 0; i < xml.childNodes.length; i++) {
1299
- const child = xml.childNodes[i];
1300
-
1048
+ function parseCameraOptics(xml2) {
1049
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1050
+ const child = xml2.childNodes[i];
1301
1051
  switch (child.nodeName) {
1302
- case 'technique_common':
1052
+ case "technique_common":
1303
1053
  return parseCameraTechnique(child);
1304
1054
  }
1305
1055
  }
1306
-
1307
1056
  return {};
1308
1057
  }
1309
-
1310
- function parseCameraTechnique(xml) {
1058
+ function parseCameraTechnique(xml2) {
1311
1059
  const data = {};
1312
-
1313
- for (let i = 0; i < xml.childNodes.length; i++) {
1314
- const child = xml.childNodes[i];
1315
-
1060
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1061
+ const child = xml2.childNodes[i];
1316
1062
  switch (child.nodeName) {
1317
- case 'perspective':
1318
- case 'orthographic':
1063
+ case "perspective":
1064
+ case "orthographic":
1319
1065
  data.technique = child.nodeName;
1320
1066
  data.parameters = parseCameraParameters(child);
1321
1067
  break;
1322
1068
  }
1323
1069
  }
1324
-
1325
1070
  return data;
1326
1071
  }
1327
-
1328
- function parseCameraParameters(xml) {
1072
+ function parseCameraParameters(xml2) {
1329
1073
  const data = {};
1330
-
1331
- for (let i = 0; i < xml.childNodes.length; i++) {
1332
- const child = xml.childNodes[i];
1333
-
1074
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1075
+ const child = xml2.childNodes[i];
1334
1076
  switch (child.nodeName) {
1335
- case 'xfov':
1336
- case 'yfov':
1337
- case 'xmag':
1338
- case 'ymag':
1339
- case 'znear':
1340
- case 'zfar':
1341
- case 'aspect_ratio':
1077
+ case "xfov":
1078
+ case "yfov":
1079
+ case "xmag":
1080
+ case "ymag":
1081
+ case "znear":
1082
+ case "zfar":
1083
+ case "aspect_ratio":
1342
1084
  data[child.nodeName] = parseFloat(child.textContent);
1343
1085
  break;
1344
1086
  }
1345
1087
  }
1346
-
1347
1088
  return data;
1348
1089
  }
1349
-
1350
1090
  function buildCamera(data) {
1351
1091
  let camera;
1352
-
1353
1092
  switch (data.optics.technique) {
1354
- case 'perspective':
1355
- camera = new PerspectiveCamera(data.optics.parameters.yfov, data.optics.parameters.aspect_ratio, data.optics.parameters.znear, data.optics.parameters.zfar);
1093
+ case "perspective":
1094
+ camera = new THREE.PerspectiveCamera(
1095
+ data.optics.parameters.yfov,
1096
+ data.optics.parameters.aspect_ratio,
1097
+ data.optics.parameters.znear,
1098
+ data.optics.parameters.zfar
1099
+ );
1356
1100
  break;
1357
-
1358
- case 'orthographic':
1101
+ case "orthographic":
1359
1102
  let ymag = data.optics.parameters.ymag;
1360
1103
  let xmag = data.optics.parameters.xmag;
1361
1104
  const aspectRatio = data.optics.parameters.aspect_ratio;
1362
- xmag = xmag === undefined ? ymag * aspectRatio : xmag;
1363
- ymag = ymag === undefined ? xmag / aspectRatio : ymag;
1105
+ xmag = xmag === void 0 ? ymag * aspectRatio : xmag;
1106
+ ymag = ymag === void 0 ? xmag / aspectRatio : ymag;
1364
1107
  xmag *= 0.5;
1365
1108
  ymag *= 0.5;
1366
- camera = new OrthographicCamera(-xmag, xmag, ymag, -ymag, // left, right, top, bottom
1367
- data.optics.parameters.znear, data.optics.parameters.zfar);
1109
+ camera = new THREE.OrthographicCamera(
1110
+ -xmag,
1111
+ xmag,
1112
+ ymag,
1113
+ -ymag,
1114
+ data.optics.parameters.znear,
1115
+ data.optics.parameters.zfar
1116
+ );
1368
1117
  break;
1369
-
1370
1118
  default:
1371
- camera = new PerspectiveCamera();
1119
+ camera = new THREE.PerspectiveCamera();
1372
1120
  break;
1373
1121
  }
1374
-
1375
- camera.name = data.name || '';
1122
+ camera.name = data.name || "";
1376
1123
  return camera;
1377
1124
  }
1378
-
1379
1125
  function getCamera(id) {
1380
1126
  const data = library.cameras[id];
1381
-
1382
- if (data !== undefined) {
1127
+ if (data !== void 0) {
1383
1128
  return getBuild(data, buildCamera);
1384
1129
  }
1385
-
1386
1130
  console.warn("THREE.ColladaLoader: Couldn't find camera with ID:", id);
1387
1131
  return null;
1388
- } // light
1389
-
1390
-
1391
- function parseLight(xml) {
1132
+ }
1133
+ function parseLight(xml2) {
1392
1134
  let data = {};
1393
-
1394
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
1395
- const child = xml.childNodes[i];
1396
- if (child.nodeType !== 1) continue;
1397
-
1135
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
1136
+ const child = xml2.childNodes[i];
1137
+ if (child.nodeType !== 1)
1138
+ continue;
1398
1139
  switch (child.nodeName) {
1399
- case 'technique_common':
1140
+ case "technique_common":
1400
1141
  data = parseLightTechnique(child);
1401
1142
  break;
1402
1143
  }
1403
1144
  }
1404
-
1405
- library.lights[xml.getAttribute('id')] = data;
1145
+ library.lights[xml2.getAttribute("id")] = data;
1406
1146
  }
1407
-
1408
- function parseLightTechnique(xml) {
1147
+ function parseLightTechnique(xml2) {
1409
1148
  const data = {};
1410
-
1411
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
1412
- const child = xml.childNodes[i];
1413
- if (child.nodeType !== 1) continue;
1414
-
1149
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
1150
+ const child = xml2.childNodes[i];
1151
+ if (child.nodeType !== 1)
1152
+ continue;
1415
1153
  switch (child.nodeName) {
1416
- case 'directional':
1417
- case 'point':
1418
- case 'spot':
1419
- case 'ambient':
1154
+ case "directional":
1155
+ case "point":
1156
+ case "spot":
1157
+ case "ambient":
1420
1158
  data.technique = child.nodeName;
1421
1159
  data.parameters = parseLightParameters(child);
1422
1160
  }
1423
1161
  }
1424
-
1425
1162
  return data;
1426
1163
  }
1427
-
1428
- function parseLightParameters(xml) {
1164
+ function parseLightParameters(xml2) {
1429
1165
  const data = {};
1430
-
1431
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
1432
- const child = xml.childNodes[i];
1433
- if (child.nodeType !== 1) continue;
1434
-
1166
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
1167
+ const child = xml2.childNodes[i];
1168
+ if (child.nodeType !== 1)
1169
+ continue;
1435
1170
  switch (child.nodeName) {
1436
- case 'color':
1171
+ case "color":
1437
1172
  const array = parseFloats(child.textContent);
1438
- data.color = new Color().fromArray(array);
1173
+ data.color = new THREE.Color().fromArray(array);
1439
1174
  break;
1440
-
1441
- case 'falloff_angle':
1175
+ case "falloff_angle":
1442
1176
  data.falloffAngle = parseFloat(child.textContent);
1443
1177
  break;
1444
-
1445
- case 'quadratic_attenuation':
1178
+ case "quadratic_attenuation":
1446
1179
  const f = parseFloat(child.textContent);
1447
1180
  data.distance = f ? Math.sqrt(1 / f) : 0;
1448
1181
  break;
1449
1182
  }
1450
1183
  }
1451
-
1452
1184
  return data;
1453
1185
  }
1454
-
1455
1186
  function buildLight(data) {
1456
1187
  let light;
1457
-
1458
1188
  switch (data.technique) {
1459
- case 'directional':
1460
- light = new DirectionalLight();
1189
+ case "directional":
1190
+ light = new THREE.DirectionalLight();
1461
1191
  break;
1462
-
1463
- case 'point':
1464
- light = new PointLight();
1192
+ case "point":
1193
+ light = new THREE.PointLight();
1465
1194
  break;
1466
-
1467
- case 'spot':
1468
- light = new SpotLight();
1195
+ case "spot":
1196
+ light = new THREE.SpotLight();
1469
1197
  break;
1470
-
1471
- case 'ambient':
1472
- light = new AmbientLight();
1198
+ case "ambient":
1199
+ light = new THREE.AmbientLight();
1473
1200
  break;
1474
1201
  }
1475
-
1476
- if (data.parameters.color) light.color.copy(data.parameters.color);
1477
- if (data.parameters.distance) light.distance = data.parameters.distance;
1202
+ if (data.parameters.color)
1203
+ light.color.copy(data.parameters.color);
1204
+ if (data.parameters.distance)
1205
+ light.distance = data.parameters.distance;
1478
1206
  return light;
1479
1207
  }
1480
-
1481
1208
  function getLight(id) {
1482
1209
  const data = library.lights[id];
1483
-
1484
- if (data !== undefined) {
1210
+ if (data !== void 0) {
1485
1211
  return getBuild(data, buildLight);
1486
1212
  }
1487
-
1488
1213
  console.warn("THREE.ColladaLoader: Couldn't find light with ID:", id);
1489
1214
  return null;
1490
- } // geometry
1491
-
1492
-
1493
- function parseGeometry(xml) {
1215
+ }
1216
+ function parseGeometry(xml2) {
1494
1217
  const data = {
1495
- name: xml.getAttribute('name'),
1218
+ name: xml2.getAttribute("name"),
1496
1219
  sources: {},
1497
1220
  vertices: {},
1498
1221
  primitives: []
1499
1222
  };
1500
- const mesh = getElementsByTagName(xml, 'mesh')[0]; // the following tags inside geometry are not supported yet (see https://github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brep
1501
-
1502
- if (mesh === undefined) return;
1503
-
1223
+ const mesh = getElementsByTagName(xml2, "mesh")[0];
1224
+ if (mesh === void 0)
1225
+ return;
1504
1226
  for (let i = 0; i < mesh.childNodes.length; i++) {
1505
1227
  const child = mesh.childNodes[i];
1506
- if (child.nodeType !== 1) continue;
1507
- const id = child.getAttribute('id');
1508
-
1228
+ if (child.nodeType !== 1)
1229
+ continue;
1230
+ const id = child.getAttribute("id");
1509
1231
  switch (child.nodeName) {
1510
- case 'source':
1232
+ case "source":
1511
1233
  data.sources[id] = parseSource(child);
1512
1234
  break;
1513
-
1514
- case 'vertices':
1515
- // data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ];
1235
+ case "vertices":
1516
1236
  data.vertices = parseGeometryVertices(child);
1517
1237
  break;
1518
-
1519
- case 'polygons':
1520
- console.warn('THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName);
1238
+ case "polygons":
1239
+ console.warn("THREE.ColladaLoader: Unsupported primitive type: ", child.nodeName);
1521
1240
  break;
1522
-
1523
- case 'lines':
1524
- case 'linestrips':
1525
- case 'polylist':
1526
- case 'triangles':
1241
+ case "lines":
1242
+ case "linestrips":
1243
+ case "polylist":
1244
+ case "triangles":
1527
1245
  data.primitives.push(parseGeometryPrimitive(child));
1528
1246
  break;
1529
-
1530
1247
  default:
1531
1248
  console.log(child);
1532
1249
  }
1533
1250
  }
1534
-
1535
- library.geometries[xml.getAttribute('id')] = data;
1251
+ library.geometries[xml2.getAttribute("id")] = data;
1536
1252
  }
1537
-
1538
- function parseSource(xml) {
1253
+ function parseSource(xml2) {
1539
1254
  const data = {
1540
1255
  array: [],
1541
1256
  stride: 3
1542
1257
  };
1543
-
1544
- for (let i = 0; i < xml.childNodes.length; i++) {
1545
- const child = xml.childNodes[i];
1546
- if (child.nodeType !== 1) continue;
1547
-
1258
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1259
+ const child = xml2.childNodes[i];
1260
+ if (child.nodeType !== 1)
1261
+ continue;
1548
1262
  switch (child.nodeName) {
1549
- case 'float_array':
1263
+ case "float_array":
1550
1264
  data.array = parseFloats(child.textContent);
1551
1265
  break;
1552
-
1553
- case 'Name_array':
1266
+ case "Name_array":
1554
1267
  data.array = parseStrings(child.textContent);
1555
1268
  break;
1556
-
1557
- case 'technique_common':
1558
- const accessor = getElementsByTagName(child, 'accessor')[0];
1559
-
1560
- if (accessor !== undefined) {
1561
- data.stride = parseInt(accessor.getAttribute('stride'));
1269
+ case "technique_common":
1270
+ const accessor = getElementsByTagName(child, "accessor")[0];
1271
+ if (accessor !== void 0) {
1272
+ data.stride = parseInt(accessor.getAttribute("stride"));
1562
1273
  }
1563
-
1564
1274
  break;
1565
1275
  }
1566
1276
  }
1567
-
1568
1277
  return data;
1569
1278
  }
1570
-
1571
- function parseGeometryVertices(xml) {
1279
+ function parseGeometryVertices(xml2) {
1572
1280
  const data = {};
1573
-
1574
- for (let i = 0; i < xml.childNodes.length; i++) {
1575
- const child = xml.childNodes[i];
1576
- if (child.nodeType !== 1) continue;
1577
- data[child.getAttribute('semantic')] = parseId(child.getAttribute('source'));
1281
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1282
+ const child = xml2.childNodes[i];
1283
+ if (child.nodeType !== 1)
1284
+ continue;
1285
+ data[child.getAttribute("semantic")] = parseId(child.getAttribute("source"));
1578
1286
  }
1579
-
1580
1287
  return data;
1581
1288
  }
1582
-
1583
- function parseGeometryPrimitive(xml) {
1289
+ function parseGeometryPrimitive(xml2) {
1584
1290
  const primitive = {
1585
- type: xml.nodeName,
1586
- material: xml.getAttribute('material'),
1587
- count: parseInt(xml.getAttribute('count')),
1291
+ type: xml2.nodeName,
1292
+ material: xml2.getAttribute("material"),
1293
+ count: parseInt(xml2.getAttribute("count")),
1588
1294
  inputs: {},
1589
1295
  stride: 0,
1590
1296
  hasUV: false
1591
1297
  };
1592
-
1593
- for (let i = 0, l = xml.childNodes.length; i < l; i++) {
1594
- const child = xml.childNodes[i];
1595
- if (child.nodeType !== 1) continue;
1596
-
1298
+ for (let i = 0, l = xml2.childNodes.length; i < l; i++) {
1299
+ const child = xml2.childNodes[i];
1300
+ if (child.nodeType !== 1)
1301
+ continue;
1597
1302
  switch (child.nodeName) {
1598
- case 'input':
1599
- const id = parseId(child.getAttribute('source'));
1600
- const semantic = child.getAttribute('semantic');
1601
- const offset = parseInt(child.getAttribute('offset'));
1602
- const set = parseInt(child.getAttribute('set'));
1303
+ case "input":
1304
+ const id = parseId(child.getAttribute("source"));
1305
+ const semantic = child.getAttribute("semantic");
1306
+ const offset = parseInt(child.getAttribute("offset"));
1307
+ const set = parseInt(child.getAttribute("set"));
1603
1308
  const inputname = set > 0 ? semantic + set : semantic;
1604
- primitive.inputs[inputname] = {
1605
- id: id,
1606
- offset: offset
1607
- };
1309
+ primitive.inputs[inputname] = { id, offset };
1608
1310
  primitive.stride = Math.max(primitive.stride, offset + 1);
1609
- if (semantic === 'TEXCOORD') primitive.hasUV = true;
1311
+ if (semantic === "TEXCOORD")
1312
+ primitive.hasUV = true;
1610
1313
  break;
1611
-
1612
- case 'vcount':
1314
+ case "vcount":
1613
1315
  primitive.vcount = parseInts(child.textContent);
1614
1316
  break;
1615
-
1616
- case 'p':
1317
+ case "p":
1617
1318
  primitive.p = parseInts(child.textContent);
1618
1319
  break;
1619
1320
  }
1620
1321
  }
1621
-
1622
1322
  return primitive;
1623
1323
  }
1624
-
1625
1324
  function groupPrimitives(primitives) {
1626
1325
  const build = {};
1627
-
1628
1326
  for (let i = 0; i < primitives.length; i++) {
1629
1327
  const primitive = primitives[i];
1630
- if (build[primitive.type] === undefined) build[primitive.type] = [];
1328
+ if (build[primitive.type] === void 0)
1329
+ build[primitive.type] = [];
1631
1330
  build[primitive.type].push(primitive);
1632
1331
  }
1633
-
1634
1332
  return build;
1635
1333
  }
1636
-
1637
1334
  function checkUVCoordinates(primitives) {
1638
- let count = 0;
1639
-
1335
+ let count2 = 0;
1640
1336
  for (let i = 0, l = primitives.length; i < l; i++) {
1641
1337
  const primitive = primitives[i];
1642
-
1643
1338
  if (primitive.hasUV === true) {
1644
- count++;
1339
+ count2++;
1645
1340
  }
1646
1341
  }
1647
-
1648
- if (count > 0 && count < primitives.length) {
1342
+ if (count2 > 0 && count2 < primitives.length) {
1649
1343
  primitives.uvsNeedsFix = true;
1650
1344
  }
1651
1345
  }
1652
-
1653
1346
  function buildGeometry(data) {
1654
1347
  const build = {};
1655
1348
  const sources = data.sources;
1656
1349
  const vertices = data.vertices;
1657
1350
  const primitives = data.primitives;
1658
- if (primitives.length === 0) return {}; // our goal is to create one buffer geometry for a single type of primitives
1659
- // first, we group all primitives by their type
1660
-
1351
+ if (primitives.length === 0)
1352
+ return {};
1661
1353
  const groupedPrimitives = groupPrimitives(primitives);
1662
-
1663
1354
  for (const type in groupedPrimitives) {
1664
- const primitiveType = groupedPrimitives[type]; // second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines)
1665
-
1666
- checkUVCoordinates(primitiveType); // third, create a buffer geometry for each type of primitives
1667
-
1355
+ const primitiveType = groupedPrimitives[type];
1356
+ checkUVCoordinates(primitiveType);
1668
1357
  build[type] = buildGeometryType(primitiveType, sources, vertices);
1669
1358
  }
1670
-
1671
1359
  return build;
1672
1360
  }
1673
-
1674
1361
  function buildGeometryType(primitives, sources, vertices) {
1675
1362
  const build = {};
1676
- const position = {
1677
- array: [],
1678
- stride: 0
1679
- };
1680
- const normal = {
1681
- array: [],
1682
- stride: 0
1683
- };
1684
- const uv = {
1685
- array: [],
1686
- stride: 0
1687
- };
1688
- const uv2 = {
1689
- array: [],
1690
- stride: 0
1691
- };
1692
- const color = {
1693
- array: [],
1694
- stride: 0
1695
- };
1696
- const skinIndex = {
1697
- array: [],
1698
- stride: 4
1699
- };
1700
- const skinWeight = {
1701
- array: [],
1702
- stride: 4
1703
- };
1704
- const geometry = new BufferGeometry();
1363
+ const position2 = { array: [], stride: 0 };
1364
+ const normal = { array: [], stride: 0 };
1365
+ const uv = { array: [], stride: 0 };
1366
+ const uv2 = { array: [], stride: 0 };
1367
+ const color = { array: [], stride: 0 };
1368
+ const skinIndex = { array: [], stride: 4 };
1369
+ const skinWeight = { array: [], stride: 4 };
1370
+ const geometry = new THREE.BufferGeometry();
1705
1371
  const materialKeys = [];
1706
1372
  let start = 0;
1707
-
1708
1373
  for (let p = 0; p < primitives.length; p++) {
1709
1374
  const primitive = primitives[p];
1710
- const inputs = primitive.inputs; // groups
1711
-
1712
- let count = 0;
1713
-
1375
+ const inputs = primitive.inputs;
1376
+ let count2 = 0;
1714
1377
  switch (primitive.type) {
1715
- case 'lines':
1716
- case 'linestrips':
1717
- count = primitive.count * 2;
1378
+ case "lines":
1379
+ case "linestrips":
1380
+ count2 = primitive.count * 2;
1718
1381
  break;
1719
-
1720
- case 'triangles':
1721
- count = primitive.count * 3;
1382
+ case "triangles":
1383
+ count2 = primitive.count * 3;
1722
1384
  break;
1723
-
1724
- case 'polylist':
1385
+ case "polylist":
1725
1386
  for (let g = 0; g < primitive.count; g++) {
1726
1387
  const vc = primitive.vcount[g];
1727
-
1728
1388
  switch (vc) {
1729
1389
  case 3:
1730
- count += 3; // single triangle
1731
-
1390
+ count2 += 3;
1732
1391
  break;
1733
-
1734
1392
  case 4:
1735
- count += 6; // quad, subdivided into two triangles
1736
-
1393
+ count2 += 6;
1737
1394
  break;
1738
-
1739
1395
  default:
1740
- count += (vc - 2) * 3; // polylist with more than four vertices
1741
-
1396
+ count2 += (vc - 2) * 3;
1742
1397
  break;
1743
1398
  }
1744
1399
  }
1745
-
1746
1400
  break;
1747
-
1748
1401
  default:
1749
- console.warn('THREE.ColladaLoader: Unknow primitive type:', primitive.type);
1402
+ console.warn("THREE.ColladaLoader: Unknow primitive type:", primitive.type);
1750
1403
  }
1751
-
1752
- geometry.addGroup(start, count, p);
1753
- start += count; // material
1754
-
1404
+ geometry.addGroup(start, count2, p);
1405
+ start += count2;
1755
1406
  if (primitive.material) {
1756
1407
  materialKeys.push(primitive.material);
1757
- } // geometry data
1758
-
1759
-
1408
+ }
1760
1409
  for (const name in inputs) {
1761
1410
  const input = inputs[name];
1762
-
1763
1411
  switch (name) {
1764
- case 'VERTEX':
1412
+ case "VERTEX":
1765
1413
  for (const key in vertices) {
1766
1414
  const id = vertices[key];
1767
-
1768
1415
  switch (key) {
1769
- case 'POSITION':
1770
- const prevLength = position.array.length;
1771
- buildGeometryData(primitive, sources[id], input.offset, position.array);
1772
- position.stride = sources[id].stride;
1773
-
1416
+ case "POSITION":
1417
+ const prevLength = position2.array.length;
1418
+ buildGeometryData(primitive, sources[id], input.offset, position2.array);
1419
+ position2.stride = sources[id].stride;
1774
1420
  if (sources.skinWeights && sources.skinIndices) {
1775
1421
  buildGeometryData(primitive, sources.skinIndices, input.offset, skinIndex.array);
1776
1422
  buildGeometryData(primitive, sources.skinWeights, input.offset, skinWeight.array);
1777
- } // see #3803
1778
-
1779
-
1423
+ }
1780
1424
  if (primitive.hasUV === false && primitives.uvsNeedsFix === true) {
1781
- const count = (position.array.length - prevLength) / position.stride;
1782
-
1783
- for (let i = 0; i < count; i++) {
1784
- // fill missing uv coordinates
1425
+ const count3 = (position2.array.length - prevLength) / position2.stride;
1426
+ for (let i = 0; i < count3; i++) {
1785
1427
  uv.array.push(0, 0);
1786
1428
  }
1787
1429
  }
1788
-
1789
1430
  break;
1790
-
1791
- case 'NORMAL':
1431
+ case "NORMAL":
1792
1432
  buildGeometryData(primitive, sources[id], input.offset, normal.array);
1793
1433
  normal.stride = sources[id].stride;
1794
1434
  break;
1795
-
1796
- case 'COLOR':
1435
+ case "COLOR":
1797
1436
  buildGeometryData(primitive, sources[id], input.offset, color.array);
1798
1437
  color.stride = sources[id].stride;
1799
1438
  break;
1800
-
1801
- case 'TEXCOORD':
1439
+ case "TEXCOORD":
1802
1440
  buildGeometryData(primitive, sources[id], input.offset, uv.array);
1803
1441
  uv.stride = sources[id].stride;
1804
1442
  break;
1805
-
1806
- case 'TEXCOORD1':
1443
+ case "TEXCOORD1":
1807
1444
  buildGeometryData(primitive, sources[id], input.offset, uv2.array);
1808
1445
  uv.stride = sources[id].stride;
1809
1446
  break;
1810
-
1811
1447
  default:
1812
1448
  console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.', key);
1813
1449
  }
1814
1450
  }
1815
-
1816
1451
  break;
1817
-
1818
- case 'NORMAL':
1452
+ case "NORMAL":
1819
1453
  buildGeometryData(primitive, sources[input.id], input.offset, normal.array);
1820
1454
  normal.stride = sources[input.id].stride;
1821
1455
  break;
1822
-
1823
- case 'COLOR':
1456
+ case "COLOR":
1824
1457
  buildGeometryData(primitive, sources[input.id], input.offset, color.array);
1825
1458
  color.stride = sources[input.id].stride;
1826
1459
  break;
1827
-
1828
- case 'TEXCOORD':
1460
+ case "TEXCOORD":
1829
1461
  buildGeometryData(primitive, sources[input.id], input.offset, uv.array);
1830
1462
  uv.stride = sources[input.id].stride;
1831
1463
  break;
1832
-
1833
- case 'TEXCOORD1':
1464
+ case "TEXCOORD1":
1834
1465
  buildGeometryData(primitive, sources[input.id], input.offset, uv2.array);
1835
1466
  uv2.stride = sources[input.id].stride;
1836
1467
  break;
1837
1468
  }
1838
1469
  }
1839
- } // build geometry
1840
-
1841
-
1842
- if (position.array.length > 0) {
1843
- geometry.setAttribute('position', new Float32BufferAttribute(position.array, position.stride));
1844
1470
  }
1845
-
1846
- if (normal.array.length > 0) {
1847
- geometry.setAttribute('normal', new Float32BufferAttribute(normal.array, normal.stride));
1471
+ if (position2.array.length > 0) {
1472
+ geometry.setAttribute("position", new THREE.Float32BufferAttribute(position2.array, position2.stride));
1848
1473
  }
1849
-
1850
- if (color.array.length > 0) geometry.setAttribute('color', new Float32BufferAttribute(color.array, color.stride));
1851
- if (uv.array.length > 0) geometry.setAttribute('uv', new Float32BufferAttribute(uv.array, uv.stride));
1852
- if (uv2.array.length > 0) geometry.setAttribute('uv2', new Float32BufferAttribute(uv2.array, uv2.stride));
1853
-
1474
+ if (normal.array.length > 0) {
1475
+ geometry.setAttribute("normal", new THREE.Float32BufferAttribute(normal.array, normal.stride));
1476
+ }
1477
+ if (color.array.length > 0)
1478
+ geometry.setAttribute("color", new THREE.Float32BufferAttribute(color.array, color.stride));
1479
+ if (uv.array.length > 0)
1480
+ geometry.setAttribute("uv", new THREE.Float32BufferAttribute(uv.array, uv.stride));
1481
+ if (uv2.array.length > 0)
1482
+ geometry.setAttribute("uv2", new THREE.Float32BufferAttribute(uv2.array, uv2.stride));
1854
1483
  if (skinIndex.array.length > 0) {
1855
- geometry.setAttribute('skinIndex', new Float32BufferAttribute(skinIndex.array, skinIndex.stride));
1484
+ geometry.setAttribute("skinIndex", new THREE.Float32BufferAttribute(skinIndex.array, skinIndex.stride));
1856
1485
  }
1857
-
1858
1486
  if (skinWeight.array.length > 0) {
1859
- geometry.setAttribute('skinWeight', new Float32BufferAttribute(skinWeight.array, skinWeight.stride));
1487
+ geometry.setAttribute("skinWeight", new THREE.Float32BufferAttribute(skinWeight.array, skinWeight.stride));
1860
1488
  }
1861
-
1862
1489
  build.data = geometry;
1863
1490
  build.type = primitives[0].type;
1864
1491
  build.materialKeys = materialKeys;
1865
1492
  return build;
1866
1493
  }
1867
-
1868
1494
  function buildGeometryData(primitive, source, offset, array) {
1869
1495
  const indices = primitive.p;
1870
1496
  const stride = primitive.stride;
1871
1497
  const vcount = primitive.vcount;
1872
-
1873
1498
  function pushVector(i) {
1874
1499
  let index = indices[i + offset] * sourceStride;
1875
1500
  const length = index + sourceStride;
1876
-
1877
1501
  for (; index < length; index++) {
1878
1502
  array.push(sourceArray[index]);
1879
1503
  }
1880
1504
  }
1881
-
1882
1505
  const sourceArray = source.array;
1883
1506
  const sourceStride = source.stride;
1884
-
1885
- if (primitive.vcount !== undefined) {
1507
+ if (primitive.vcount !== void 0) {
1886
1508
  let index = 0;
1887
-
1888
1509
  for (let i = 0, l = vcount.length; i < l; i++) {
1889
- const count = vcount[i];
1890
-
1891
- if (count === 4) {
1510
+ const count2 = vcount[i];
1511
+ if (count2 === 4) {
1892
1512
  const a = index + stride * 0;
1893
1513
  const b = index + stride * 1;
1894
1514
  const c = index + stride * 2;
@@ -1899,15 +1519,15 @@ class ColladaLoader extends Loader {
1899
1519
  pushVector(b);
1900
1520
  pushVector(c);
1901
1521
  pushVector(d);
1902
- } else if (count === 3) {
1522
+ } else if (count2 === 3) {
1903
1523
  const a = index + stride * 0;
1904
1524
  const b = index + stride * 1;
1905
1525
  const c = index + stride * 2;
1906
1526
  pushVector(a);
1907
1527
  pushVector(b);
1908
1528
  pushVector(c);
1909
- } else if (count > 4) {
1910
- for (let k = 1, kl = count - 2; k <= kl; k++) {
1529
+ } else if (count2 > 4) {
1530
+ for (let k = 1, kl = count2 - 2; k <= kl; k++) {
1911
1531
  const a = index + stride * 0;
1912
1532
  const b = index + stride * k;
1913
1533
  const c = index + stride * (k + 1);
@@ -1916,8 +1536,7 @@ class ColladaLoader extends Loader {
1916
1536
  pushVector(c);
1917
1537
  }
1918
1538
  }
1919
-
1920
- index += stride * count;
1539
+ index += stride * count2;
1921
1540
  }
1922
1541
  } else {
1923
1542
  for (let i = 0, l = indices.length; i < l; i += stride) {
@@ -1925,493 +1544,420 @@ class ColladaLoader extends Loader {
1925
1544
  }
1926
1545
  }
1927
1546
  }
1928
-
1929
1547
  function getGeometry(id) {
1930
1548
  return getBuild(library.geometries[id], buildGeometry);
1931
- } // kinematics
1932
-
1933
-
1934
- function parseKinematicsModel(xml) {
1549
+ }
1550
+ function parseKinematicsModel(xml2) {
1935
1551
  const data = {
1936
- name: xml.getAttribute('name') || '',
1552
+ name: xml2.getAttribute("name") || "",
1937
1553
  joints: {},
1938
1554
  links: []
1939
1555
  };
1940
-
1941
- for (let i = 0; i < xml.childNodes.length; i++) {
1942
- const child = xml.childNodes[i];
1943
- if (child.nodeType !== 1) continue;
1944
-
1556
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1557
+ const child = xml2.childNodes[i];
1558
+ if (child.nodeType !== 1)
1559
+ continue;
1945
1560
  switch (child.nodeName) {
1946
- case 'technique_common':
1561
+ case "technique_common":
1947
1562
  parseKinematicsTechniqueCommon(child, data);
1948
1563
  break;
1949
1564
  }
1950
1565
  }
1951
-
1952
- library.kinematicsModels[xml.getAttribute('id')] = data;
1566
+ library.kinematicsModels[xml2.getAttribute("id")] = data;
1953
1567
  }
1954
-
1955
1568
  function buildKinematicsModel(data) {
1956
- if (data.build !== undefined) return data.build;
1569
+ if (data.build !== void 0)
1570
+ return data.build;
1957
1571
  return data;
1958
1572
  }
1959
-
1960
1573
  function getKinematicsModel(id) {
1961
1574
  return getBuild(library.kinematicsModels[id], buildKinematicsModel);
1962
1575
  }
1963
-
1964
- function parseKinematicsTechniqueCommon(xml, data) {
1965
- for (let i = 0; i < xml.childNodes.length; i++) {
1966
- const child = xml.childNodes[i];
1967
- if (child.nodeType !== 1) continue;
1968
-
1576
+ function parseKinematicsTechniqueCommon(xml2, data) {
1577
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1578
+ const child = xml2.childNodes[i];
1579
+ if (child.nodeType !== 1)
1580
+ continue;
1969
1581
  switch (child.nodeName) {
1970
- case 'joint':
1971
- data.joints[child.getAttribute('sid')] = parseKinematicsJoint(child);
1582
+ case "joint":
1583
+ data.joints[child.getAttribute("sid")] = parseKinematicsJoint(child);
1972
1584
  break;
1973
-
1974
- case 'link':
1585
+ case "link":
1975
1586
  data.links.push(parseKinematicsLink(child));
1976
1587
  break;
1977
1588
  }
1978
1589
  }
1979
1590
  }
1980
-
1981
- function parseKinematicsJoint(xml) {
1591
+ function parseKinematicsJoint(xml2) {
1982
1592
  let data;
1983
-
1984
- for (let i = 0; i < xml.childNodes.length; i++) {
1985
- const child = xml.childNodes[i];
1986
- if (child.nodeType !== 1) continue;
1987
-
1593
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1594
+ const child = xml2.childNodes[i];
1595
+ if (child.nodeType !== 1)
1596
+ continue;
1988
1597
  switch (child.nodeName) {
1989
- case 'prismatic':
1990
- case 'revolute':
1598
+ case "prismatic":
1599
+ case "revolute":
1991
1600
  data = parseKinematicsJointParameter(child);
1992
1601
  break;
1993
1602
  }
1994
1603
  }
1995
-
1996
1604
  return data;
1997
1605
  }
1998
-
1999
- function parseKinematicsJointParameter(xml) {
1606
+ function parseKinematicsJointParameter(xml2) {
2000
1607
  const data = {
2001
- sid: xml.getAttribute('sid'),
2002
- name: xml.getAttribute('name') || '',
2003
- axis: new Vector3(),
1608
+ sid: xml2.getAttribute("sid"),
1609
+ name: xml2.getAttribute("name") || "",
1610
+ axis: new THREE.Vector3(),
2004
1611
  limits: {
2005
1612
  min: 0,
2006
1613
  max: 0
2007
1614
  },
2008
- type: xml.nodeName,
1615
+ type: xml2.nodeName,
2009
1616
  static: false,
2010
1617
  zeroPosition: 0,
2011
1618
  middlePosition: 0
2012
1619
  };
2013
-
2014
- for (let i = 0; i < xml.childNodes.length; i++) {
2015
- const child = xml.childNodes[i];
2016
- if (child.nodeType !== 1) continue;
2017
-
1620
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1621
+ const child = xml2.childNodes[i];
1622
+ if (child.nodeType !== 1)
1623
+ continue;
2018
1624
  switch (child.nodeName) {
2019
- case 'axis':
1625
+ case "axis":
2020
1626
  const array = parseFloats(child.textContent);
2021
1627
  data.axis.fromArray(array);
2022
1628
  break;
2023
-
2024
- case 'limits':
2025
- const max = child.getElementsByTagName('max')[0];
2026
- const min = child.getElementsByTagName('min')[0];
1629
+ case "limits":
1630
+ const max = child.getElementsByTagName("max")[0];
1631
+ const min = child.getElementsByTagName("min")[0];
2027
1632
  data.limits.max = parseFloat(max.textContent);
2028
1633
  data.limits.min = parseFloat(min.textContent);
2029
1634
  break;
2030
1635
  }
2031
- } // if min is equal to or greater than max, consider the joint static
2032
-
2033
-
1636
+ }
2034
1637
  if (data.limits.min >= data.limits.max) {
2035
1638
  data.static = true;
2036
- } // calculate middle position
2037
-
2038
-
2039
- data.middlePosition = (data.limits.min + data.limits.max) / 2.0;
1639
+ }
1640
+ data.middlePosition = (data.limits.min + data.limits.max) / 2;
2040
1641
  return data;
2041
1642
  }
2042
-
2043
- function parseKinematicsLink(xml) {
1643
+ function parseKinematicsLink(xml2) {
2044
1644
  const data = {
2045
- sid: xml.getAttribute('sid'),
2046
- name: xml.getAttribute('name') || '',
1645
+ sid: xml2.getAttribute("sid"),
1646
+ name: xml2.getAttribute("name") || "",
2047
1647
  attachments: [],
2048
1648
  transforms: []
2049
1649
  };
2050
-
2051
- for (let i = 0; i < xml.childNodes.length; i++) {
2052
- const child = xml.childNodes[i];
2053
- if (child.nodeType !== 1) continue;
2054
-
1650
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1651
+ const child = xml2.childNodes[i];
1652
+ if (child.nodeType !== 1)
1653
+ continue;
2055
1654
  switch (child.nodeName) {
2056
- case 'attachment_full':
1655
+ case "attachment_full":
2057
1656
  data.attachments.push(parseKinematicsAttachment(child));
2058
1657
  break;
2059
-
2060
- case 'matrix':
2061
- case 'translate':
2062
- case 'rotate':
1658
+ case "matrix":
1659
+ case "translate":
1660
+ case "rotate":
2063
1661
  data.transforms.push(parseKinematicsTransform(child));
2064
1662
  break;
2065
1663
  }
2066
1664
  }
2067
-
2068
1665
  return data;
2069
1666
  }
2070
-
2071
- function parseKinematicsAttachment(xml) {
1667
+ function parseKinematicsAttachment(xml2) {
2072
1668
  const data = {
2073
- joint: xml.getAttribute('joint').split('/').pop(),
1669
+ joint: xml2.getAttribute("joint").split("/").pop(),
2074
1670
  transforms: [],
2075
1671
  links: []
2076
1672
  };
2077
-
2078
- for (let i = 0; i < xml.childNodes.length; i++) {
2079
- const child = xml.childNodes[i];
2080
- if (child.nodeType !== 1) continue;
2081
-
1673
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1674
+ const child = xml2.childNodes[i];
1675
+ if (child.nodeType !== 1)
1676
+ continue;
2082
1677
  switch (child.nodeName) {
2083
- case 'link':
1678
+ case "link":
2084
1679
  data.links.push(parseKinematicsLink(child));
2085
1680
  break;
2086
-
2087
- case 'matrix':
2088
- case 'translate':
2089
- case 'rotate':
1681
+ case "matrix":
1682
+ case "translate":
1683
+ case "rotate":
2090
1684
  data.transforms.push(parseKinematicsTransform(child));
2091
1685
  break;
2092
1686
  }
2093
1687
  }
2094
-
2095
1688
  return data;
2096
1689
  }
2097
-
2098
- function parseKinematicsTransform(xml) {
1690
+ function parseKinematicsTransform(xml2) {
2099
1691
  const data = {
2100
- type: xml.nodeName
1692
+ type: xml2.nodeName
2101
1693
  };
2102
- const array = parseFloats(xml.textContent);
2103
-
1694
+ const array = parseFloats(xml2.textContent);
2104
1695
  switch (data.type) {
2105
- case 'matrix':
2106
- data.obj = new Matrix4();
1696
+ case "matrix":
1697
+ data.obj = new THREE.Matrix4();
2107
1698
  data.obj.fromArray(array).transpose();
2108
1699
  break;
2109
-
2110
- case 'translate':
2111
- data.obj = new Vector3();
1700
+ case "translate":
1701
+ data.obj = new THREE.Vector3();
2112
1702
  data.obj.fromArray(array);
2113
1703
  break;
2114
-
2115
- case 'rotate':
2116
- data.obj = new Vector3();
1704
+ case "rotate":
1705
+ data.obj = new THREE.Vector3();
2117
1706
  data.obj.fromArray(array);
2118
- data.angle = MathUtils.degToRad(array[3]);
1707
+ data.angle = THREE.MathUtils.degToRad(array[3]);
2119
1708
  break;
2120
1709
  }
2121
-
2122
1710
  return data;
2123
- } // physics
2124
-
2125
-
2126
- function parsePhysicsModel(xml) {
1711
+ }
1712
+ function parsePhysicsModel(xml2) {
2127
1713
  const data = {
2128
- name: xml.getAttribute('name') || '',
1714
+ name: xml2.getAttribute("name") || "",
2129
1715
  rigidBodies: {}
2130
1716
  };
2131
-
2132
- for (let i = 0; i < xml.childNodes.length; i++) {
2133
- const child = xml.childNodes[i];
2134
- if (child.nodeType !== 1) continue;
2135
-
1717
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1718
+ const child = xml2.childNodes[i];
1719
+ if (child.nodeType !== 1)
1720
+ continue;
2136
1721
  switch (child.nodeName) {
2137
- case 'rigid_body':
2138
- data.rigidBodies[child.getAttribute('name')] = {};
2139
- parsePhysicsRigidBody(child, data.rigidBodies[child.getAttribute('name')]);
1722
+ case "rigid_body":
1723
+ data.rigidBodies[child.getAttribute("name")] = {};
1724
+ parsePhysicsRigidBody(child, data.rigidBodies[child.getAttribute("name")]);
2140
1725
  break;
2141
1726
  }
2142
1727
  }
2143
-
2144
- library.physicsModels[xml.getAttribute('id')] = data;
1728
+ library.physicsModels[xml2.getAttribute("id")] = data;
2145
1729
  }
2146
-
2147
- function parsePhysicsRigidBody(xml, data) {
2148
- for (let i = 0; i < xml.childNodes.length; i++) {
2149
- const child = xml.childNodes[i];
2150
- if (child.nodeType !== 1) continue;
2151
-
1730
+ function parsePhysicsRigidBody(xml2, data) {
1731
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1732
+ const child = xml2.childNodes[i];
1733
+ if (child.nodeType !== 1)
1734
+ continue;
2152
1735
  switch (child.nodeName) {
2153
- case 'technique_common':
1736
+ case "technique_common":
2154
1737
  parsePhysicsTechniqueCommon(child, data);
2155
1738
  break;
2156
1739
  }
2157
1740
  }
2158
1741
  }
2159
-
2160
- function parsePhysicsTechniqueCommon(xml, data) {
2161
- for (let i = 0; i < xml.childNodes.length; i++) {
2162
- const child = xml.childNodes[i];
2163
- if (child.nodeType !== 1) continue;
2164
-
1742
+ function parsePhysicsTechniqueCommon(xml2, data) {
1743
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1744
+ const child = xml2.childNodes[i];
1745
+ if (child.nodeType !== 1)
1746
+ continue;
2165
1747
  switch (child.nodeName) {
2166
- case 'inertia':
1748
+ case "inertia":
2167
1749
  data.inertia = parseFloats(child.textContent);
2168
1750
  break;
2169
-
2170
- case 'mass':
1751
+ case "mass":
2171
1752
  data.mass = parseFloats(child.textContent)[0];
2172
1753
  break;
2173
1754
  }
2174
1755
  }
2175
- } // scene
2176
-
2177
-
2178
- function parseKinematicsScene(xml) {
1756
+ }
1757
+ function parseKinematicsScene(xml2) {
2179
1758
  const data = {
2180
1759
  bindJointAxis: []
2181
1760
  };
2182
-
2183
- for (let i = 0; i < xml.childNodes.length; i++) {
2184
- const child = xml.childNodes[i];
2185
- if (child.nodeType !== 1) continue;
2186
-
1761
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1762
+ const child = xml2.childNodes[i];
1763
+ if (child.nodeType !== 1)
1764
+ continue;
2187
1765
  switch (child.nodeName) {
2188
- case 'bind_joint_axis':
1766
+ case "bind_joint_axis":
2189
1767
  data.bindJointAxis.push(parseKinematicsBindJointAxis(child));
2190
1768
  break;
2191
1769
  }
2192
1770
  }
2193
-
2194
- library.kinematicsScenes[parseId(xml.getAttribute('url'))] = data;
1771
+ library.kinematicsScenes[parseId(xml2.getAttribute("url"))] = data;
2195
1772
  }
2196
-
2197
- function parseKinematicsBindJointAxis(xml) {
1773
+ function parseKinematicsBindJointAxis(xml2) {
2198
1774
  const data = {
2199
- target: xml.getAttribute('target').split('/').pop()
1775
+ target: xml2.getAttribute("target").split("/").pop()
2200
1776
  };
2201
-
2202
- for (let i = 0; i < xml.childNodes.length; i++) {
2203
- const child = xml.childNodes[i];
2204
- if (child.nodeType !== 1) continue;
2205
-
1777
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1778
+ const child = xml2.childNodes[i];
1779
+ if (child.nodeType !== 1)
1780
+ continue;
2206
1781
  switch (child.nodeName) {
2207
- case 'axis':
2208
- const param = child.getElementsByTagName('param')[0];
1782
+ case "axis":
1783
+ const param = child.getElementsByTagName("param")[0];
2209
1784
  data.axis = param.textContent;
2210
- const tmpJointIndex = data.axis.split('inst_').pop().split('axis')[0];
1785
+ const tmpJointIndex = data.axis.split("inst_").pop().split("axis")[0];
2211
1786
  data.jointIndex = tmpJointIndex.substr(0, tmpJointIndex.length - 1);
2212
1787
  break;
2213
1788
  }
2214
1789
  }
2215
-
2216
1790
  return data;
2217
1791
  }
2218
-
2219
1792
  function buildKinematicsScene(data) {
2220
- if (data.build !== undefined) return data.build;
1793
+ if (data.build !== void 0)
1794
+ return data.build;
2221
1795
  return data;
2222
1796
  }
2223
-
2224
1797
  function getKinematicsScene(id) {
2225
1798
  return getBuild(library.kinematicsScenes[id], buildKinematicsScene);
2226
1799
  }
2227
-
2228
1800
  function setupKinematics() {
2229
1801
  const kinematicsModelId = Object.keys(library.kinematicsModels)[0];
2230
1802
  const kinematicsSceneId = Object.keys(library.kinematicsScenes)[0];
2231
1803
  const visualSceneId = Object.keys(library.visualScenes)[0];
2232
- if (kinematicsModelId === undefined || kinematicsSceneId === undefined) return;
1804
+ if (kinematicsModelId === void 0 || kinematicsSceneId === void 0)
1805
+ return;
2233
1806
  const kinematicsModel = getKinematicsModel(kinematicsModelId);
2234
1807
  const kinematicsScene = getKinematicsScene(kinematicsSceneId);
2235
1808
  const visualScene = getVisualScene(visualSceneId);
2236
1809
  const bindJointAxis = kinematicsScene.bindJointAxis;
2237
1810
  const jointMap = {};
2238
-
2239
1811
  for (let i = 0, l = bindJointAxis.length; i < l; i++) {
2240
- const axis = bindJointAxis[i]; // the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'
2241
-
1812
+ const axis = bindJointAxis[i];
2242
1813
  const targetElement = collada.querySelector('[sid="' + axis.target + '"]');
2243
-
2244
1814
  if (targetElement) {
2245
- // get the parent of the transform element
2246
- const parentVisualElement = targetElement.parentElement; // connect the joint of the kinematics model with the element in the visual scene
2247
-
1815
+ const parentVisualElement = targetElement.parentElement;
2248
1816
  connect(axis.jointIndex, parentVisualElement);
2249
1817
  }
2250
1818
  }
2251
-
2252
1819
  function connect(jointIndex, visualElement) {
2253
- const visualElementName = visualElement.getAttribute('name');
1820
+ const visualElementName = visualElement.getAttribute("name");
2254
1821
  const joint = kinematicsModel.joints[jointIndex];
2255
- visualScene.traverse(function (object) {
1822
+ visualScene.traverse(function(object) {
2256
1823
  if (object.name === visualElementName) {
2257
1824
  jointMap[jointIndex] = {
2258
- object: object,
1825
+ object,
2259
1826
  transforms: buildTransformList(visualElement),
2260
- joint: joint,
1827
+ joint,
2261
1828
  position: joint.zeroPosition
2262
1829
  };
2263
1830
  }
2264
1831
  });
2265
1832
  }
2266
-
2267
- const m0 = new Matrix4();
1833
+ const m0 = new THREE.Matrix4();
2268
1834
  kinematics = {
2269
1835
  joints: kinematicsModel && kinematicsModel.joints,
2270
- getJointValue: function (jointIndex) {
1836
+ getJointValue: function(jointIndex) {
2271
1837
  const jointData = jointMap[jointIndex];
2272
-
2273
1838
  if (jointData) {
2274
1839
  return jointData.position;
2275
1840
  } else {
2276
- console.warn('THREE.ColladaLoader: Joint ' + jointIndex + " doesn't exist.");
1841
+ console.warn("THREE.ColladaLoader: Joint " + jointIndex + " doesn't exist.");
2277
1842
  }
2278
1843
  },
2279
- setJointValue: function (jointIndex, value) {
1844
+ setJointValue: function(jointIndex, value) {
2280
1845
  const jointData = jointMap[jointIndex];
2281
-
2282
1846
  if (jointData) {
2283
1847
  const joint = jointData.joint;
2284
-
2285
1848
  if (value > joint.limits.max || value < joint.limits.min) {
2286
- console.warn('THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').');
1849
+ console.warn(
1850
+ "THREE.ColladaLoader: Joint " + jointIndex + " value " + value + " outside of limits (min: " + joint.limits.min + ", max: " + joint.limits.max + ")."
1851
+ );
2287
1852
  } else if (joint.static) {
2288
- console.warn('THREE.ColladaLoader: Joint ' + jointIndex + ' is static.');
1853
+ console.warn("THREE.ColladaLoader: Joint " + jointIndex + " is static.");
2289
1854
  } else {
2290
1855
  const object = jointData.object;
2291
1856
  const axis = joint.axis;
2292
1857
  const transforms = jointData.transforms;
2293
- matrix.identity(); // each update, we have to apply all transforms in the correct order
2294
-
1858
+ matrix.identity();
2295
1859
  for (let i = 0; i < transforms.length; i++) {
2296
- const transform = transforms[i]; // if there is a connection of the transform node with a joint, apply the joint value
2297
-
1860
+ const transform = transforms[i];
2298
1861
  if (transform.sid && transform.sid.indexOf(jointIndex) !== -1) {
2299
1862
  switch (joint.type) {
2300
- case 'revolute':
2301
- matrix.multiply(m0.makeRotationAxis(axis, MathUtils.degToRad(value)));
1863
+ case "revolute":
1864
+ matrix.multiply(m0.makeRotationAxis(axis, THREE.MathUtils.degToRad(value)));
2302
1865
  break;
2303
-
2304
- case 'prismatic':
1866
+ case "prismatic":
2305
1867
  matrix.multiply(m0.makeTranslation(axis.x * value, axis.y * value, axis.z * value));
2306
1868
  break;
2307
-
2308
1869
  default:
2309
- console.warn('THREE.ColladaLoader: Unknown joint type: ' + joint.type);
1870
+ console.warn("THREE.ColladaLoader: Unknown joint type: " + joint.type);
2310
1871
  break;
2311
1872
  }
2312
1873
  } else {
2313
1874
  switch (transform.type) {
2314
- case 'matrix':
1875
+ case "matrix":
2315
1876
  matrix.multiply(transform.obj);
2316
1877
  break;
2317
-
2318
- case 'translate':
1878
+ case "translate":
2319
1879
  matrix.multiply(m0.makeTranslation(transform.obj.x, transform.obj.y, transform.obj.z));
2320
1880
  break;
2321
-
2322
- case 'scale':
1881
+ case "scale":
2323
1882
  matrix.scale(transform.obj);
2324
1883
  break;
2325
-
2326
- case 'rotate':
1884
+ case "rotate":
2327
1885
  matrix.multiply(m0.makeRotationAxis(transform.obj, transform.angle));
2328
1886
  break;
2329
1887
  }
2330
1888
  }
2331
1889
  }
2332
-
2333
1890
  object.matrix.copy(matrix);
2334
1891
  object.matrix.decompose(object.position, object.quaternion, object.scale);
2335
1892
  jointMap[jointIndex].position = value;
2336
1893
  }
2337
1894
  } else {
2338
- console.log('THREE.ColladaLoader: ' + jointIndex + ' does not exist.');
1895
+ console.log("THREE.ColladaLoader: " + jointIndex + " does not exist.");
2339
1896
  }
2340
1897
  }
2341
1898
  };
2342
1899
  }
2343
-
2344
1900
  function buildTransformList(node) {
2345
1901
  const transforms = [];
2346
- const xml = collada.querySelector('[id="' + node.id + '"]');
2347
-
2348
- for (let i = 0; i < xml.childNodes.length; i++) {
2349
- const child = xml.childNodes[i];
2350
- if (child.nodeType !== 1) continue;
2351
- let array, vector;
2352
-
1902
+ const xml2 = collada.querySelector('[id="' + node.id + '"]');
1903
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1904
+ const child = xml2.childNodes[i];
1905
+ if (child.nodeType !== 1)
1906
+ continue;
1907
+ let array, vector2;
2353
1908
  switch (child.nodeName) {
2354
- case 'matrix':
1909
+ case "matrix":
2355
1910
  array = parseFloats(child.textContent);
2356
- const matrix = new Matrix4().fromArray(array).transpose();
1911
+ const matrix2 = new THREE.Matrix4().fromArray(array).transpose();
2357
1912
  transforms.push({
2358
- sid: child.getAttribute('sid'),
1913
+ sid: child.getAttribute("sid"),
2359
1914
  type: child.nodeName,
2360
- obj: matrix
1915
+ obj: matrix2
2361
1916
  });
2362
1917
  break;
2363
-
2364
- case 'translate':
2365
- case 'scale':
1918
+ case "translate":
1919
+ case "scale":
2366
1920
  array = parseFloats(child.textContent);
2367
- vector = new Vector3().fromArray(array);
1921
+ vector2 = new THREE.Vector3().fromArray(array);
2368
1922
  transforms.push({
2369
- sid: child.getAttribute('sid'),
1923
+ sid: child.getAttribute("sid"),
2370
1924
  type: child.nodeName,
2371
- obj: vector
1925
+ obj: vector2
2372
1926
  });
2373
1927
  break;
2374
-
2375
- case 'rotate':
1928
+ case "rotate":
2376
1929
  array = parseFloats(child.textContent);
2377
- vector = new Vector3().fromArray(array);
2378
- const angle = MathUtils.degToRad(array[3]);
1930
+ vector2 = new THREE.Vector3().fromArray(array);
1931
+ const angle = THREE.MathUtils.degToRad(array[3]);
2379
1932
  transforms.push({
2380
- sid: child.getAttribute('sid'),
1933
+ sid: child.getAttribute("sid"),
2381
1934
  type: child.nodeName,
2382
- obj: vector,
2383
- angle: angle
1935
+ obj: vector2,
1936
+ angle
2384
1937
  });
2385
1938
  break;
2386
1939
  }
2387
1940
  }
2388
-
2389
1941
  return transforms;
2390
- } // nodes
2391
-
2392
-
2393
- function prepareNodes(xml) {
2394
- const elements = xml.getElementsByTagName('node'); // ensure all node elements have id attributes
2395
-
1942
+ }
1943
+ function prepareNodes(xml2) {
1944
+ const elements = xml2.getElementsByTagName("node");
2396
1945
  for (let i = 0; i < elements.length; i++) {
2397
1946
  const element = elements[i];
2398
-
2399
- if (element.hasAttribute('id') === false) {
2400
- element.setAttribute('id', generateId());
1947
+ if (element.hasAttribute("id") === false) {
1948
+ element.setAttribute("id", generateId());
2401
1949
  }
2402
1950
  }
2403
1951
  }
2404
-
2405
- const matrix = new Matrix4();
2406
- const vector = new Vector3();
2407
-
2408
- function parseNode(xml) {
1952
+ const matrix = new THREE.Matrix4();
1953
+ const vector = new THREE.Vector3();
1954
+ function parseNode(xml2) {
2409
1955
  const data = {
2410
- name: xml.getAttribute('name') || '',
2411
- type: xml.getAttribute('type'),
2412
- id: xml.getAttribute('id'),
2413
- sid: xml.getAttribute('sid'),
2414
- matrix: new Matrix4(),
1956
+ name: xml2.getAttribute("name") || "",
1957
+ type: xml2.getAttribute("type"),
1958
+ id: xml2.getAttribute("id"),
1959
+ sid: xml2.getAttribute("sid"),
1960
+ matrix: new THREE.Matrix4(),
2415
1961
  nodes: [],
2416
1962
  instanceCameras: [],
2417
1963
  instanceControllers: [],
@@ -2420,238 +1966,183 @@ class ColladaLoader extends Loader {
2420
1966
  instanceNodes: [],
2421
1967
  transforms: {}
2422
1968
  };
2423
-
2424
- for (let i = 0; i < xml.childNodes.length; i++) {
2425
- const child = xml.childNodes[i];
2426
- if (child.nodeType !== 1) continue;
1969
+ for (let i = 0; i < xml2.childNodes.length; i++) {
1970
+ const child = xml2.childNodes[i];
1971
+ if (child.nodeType !== 1)
1972
+ continue;
2427
1973
  let array;
2428
-
2429
1974
  switch (child.nodeName) {
2430
- case 'node':
2431
- data.nodes.push(child.getAttribute('id'));
1975
+ case "node":
1976
+ data.nodes.push(child.getAttribute("id"));
2432
1977
  parseNode(child);
2433
1978
  break;
2434
-
2435
- case 'instance_camera':
2436
- data.instanceCameras.push(parseId(child.getAttribute('url')));
1979
+ case "instance_camera":
1980
+ data.instanceCameras.push(parseId(child.getAttribute("url")));
2437
1981
  break;
2438
-
2439
- case 'instance_controller':
1982
+ case "instance_controller":
2440
1983
  data.instanceControllers.push(parseNodeInstance(child));
2441
1984
  break;
2442
-
2443
- case 'instance_light':
2444
- data.instanceLights.push(parseId(child.getAttribute('url')));
1985
+ case "instance_light":
1986
+ data.instanceLights.push(parseId(child.getAttribute("url")));
2445
1987
  break;
2446
-
2447
- case 'instance_geometry':
1988
+ case "instance_geometry":
2448
1989
  data.instanceGeometries.push(parseNodeInstance(child));
2449
1990
  break;
2450
-
2451
- case 'instance_node':
2452
- data.instanceNodes.push(parseId(child.getAttribute('url')));
1991
+ case "instance_node":
1992
+ data.instanceNodes.push(parseId(child.getAttribute("url")));
2453
1993
  break;
2454
-
2455
- case 'matrix':
1994
+ case "matrix":
2456
1995
  array = parseFloats(child.textContent);
2457
1996
  data.matrix.multiply(matrix.fromArray(array).transpose());
2458
- data.transforms[child.getAttribute('sid')] = child.nodeName;
1997
+ data.transforms[child.getAttribute("sid")] = child.nodeName;
2459
1998
  break;
2460
-
2461
- case 'translate':
1999
+ case "translate":
2462
2000
  array = parseFloats(child.textContent);
2463
2001
  vector.fromArray(array);
2464
2002
  data.matrix.multiply(matrix.makeTranslation(vector.x, vector.y, vector.z));
2465
- data.transforms[child.getAttribute('sid')] = child.nodeName;
2003
+ data.transforms[child.getAttribute("sid")] = child.nodeName;
2466
2004
  break;
2467
-
2468
- case 'rotate':
2005
+ case "rotate":
2469
2006
  array = parseFloats(child.textContent);
2470
- const angle = MathUtils.degToRad(array[3]);
2007
+ const angle = THREE.MathUtils.degToRad(array[3]);
2471
2008
  data.matrix.multiply(matrix.makeRotationAxis(vector.fromArray(array), angle));
2472
- data.transforms[child.getAttribute('sid')] = child.nodeName;
2009
+ data.transforms[child.getAttribute("sid")] = child.nodeName;
2473
2010
  break;
2474
-
2475
- case 'scale':
2011
+ case "scale":
2476
2012
  array = parseFloats(child.textContent);
2477
2013
  data.matrix.scale(vector.fromArray(array));
2478
- data.transforms[child.getAttribute('sid')] = child.nodeName;
2014
+ data.transforms[child.getAttribute("sid")] = child.nodeName;
2479
2015
  break;
2480
-
2481
- case 'extra':
2016
+ case "extra":
2482
2017
  break;
2483
-
2484
2018
  default:
2485
2019
  console.log(child);
2486
2020
  }
2487
2021
  }
2488
-
2489
2022
  if (hasNode(data.id)) {
2490
- console.warn('THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id);
2023
+ console.warn(
2024
+ "THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.",
2025
+ data.id
2026
+ );
2491
2027
  } else {
2492
2028
  library.nodes[data.id] = data;
2493
2029
  }
2494
-
2495
2030
  return data;
2496
2031
  }
2497
-
2498
- function parseNodeInstance(xml) {
2032
+ function parseNodeInstance(xml2) {
2499
2033
  const data = {
2500
- id: parseId(xml.getAttribute('url')),
2034
+ id: parseId(xml2.getAttribute("url")),
2501
2035
  materials: {},
2502
2036
  skeletons: []
2503
2037
  };
2504
-
2505
- for (let i = 0; i < xml.childNodes.length; i++) {
2506
- const child = xml.childNodes[i];
2507
-
2038
+ for (let i = 0; i < xml2.childNodes.length; i++) {
2039
+ const child = xml2.childNodes[i];
2508
2040
  switch (child.nodeName) {
2509
- case 'bind_material':
2510
- const instances = child.getElementsByTagName('instance_material');
2511
-
2041
+ case "bind_material":
2042
+ const instances = child.getElementsByTagName("instance_material");
2512
2043
  for (let j = 0; j < instances.length; j++) {
2513
2044
  const instance = instances[j];
2514
- const symbol = instance.getAttribute('symbol');
2515
- const target = instance.getAttribute('target');
2045
+ const symbol = instance.getAttribute("symbol");
2046
+ const target = instance.getAttribute("target");
2516
2047
  data.materials[symbol] = parseId(target);
2517
2048
  }
2518
-
2519
2049
  break;
2520
-
2521
- case 'skeleton':
2050
+ case "skeleton":
2522
2051
  data.skeletons.push(parseId(child.textContent));
2523
2052
  break;
2053
+ default:
2054
+ break;
2524
2055
  }
2525
2056
  }
2526
-
2527
2057
  return data;
2528
2058
  }
2529
-
2530
2059
  function buildSkeleton(skeletons, joints) {
2531
2060
  const boneData = [];
2532
2061
  const sortedBoneData = [];
2533
- let i, j, data; // a skeleton can have multiple root bones. collada expresses this
2534
- // situtation with multiple "skeleton" tags per controller instance
2535
-
2062
+ let i, j, data;
2536
2063
  for (i = 0; i < skeletons.length; i++) {
2537
2064
  const skeleton = skeletons[i];
2538
2065
  let root;
2539
-
2540
2066
  if (hasNode(skeleton)) {
2541
2067
  root = getNode(skeleton);
2542
2068
  buildBoneHierarchy(root, joints, boneData);
2543
2069
  } else if (hasVisualScene(skeleton)) {
2544
- // handle case where the skeleton refers to the visual scene (#13335)
2545
2070
  const visualScene = library.visualScenes[skeleton];
2546
2071
  const children = visualScene.children;
2547
-
2548
- for (let j = 0; j < children.length; j++) {
2549
- const child = children[j];
2550
-
2551
- if (child.type === 'JOINT') {
2552
- const root = getNode(child.id);
2553
- buildBoneHierarchy(root, joints, boneData);
2072
+ for (let j2 = 0; j2 < children.length; j2++) {
2073
+ const child = children[j2];
2074
+ if (child.type === "JOINT") {
2075
+ const root2 = getNode(child.id);
2076
+ buildBoneHierarchy(root2, joints, boneData);
2554
2077
  }
2555
2078
  }
2556
2079
  } else {
2557
- console.error('THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton);
2080
+ console.error("THREE.ColladaLoader: Unable to find root bone of skeleton with ID:", skeleton);
2558
2081
  }
2559
- } // sort bone data (the order is defined in the corresponding controller)
2560
-
2561
-
2082
+ }
2562
2083
  for (i = 0; i < joints.length; i++) {
2563
2084
  for (j = 0; j < boneData.length; j++) {
2564
2085
  data = boneData[j];
2565
-
2566
2086
  if (data.bone.name === joints[i].name) {
2567
2087
  sortedBoneData[i] = data;
2568
2088
  data.processed = true;
2569
2089
  break;
2570
2090
  }
2571
2091
  }
2572
- } // add unprocessed bone data at the end of the list
2573
-
2574
-
2092
+ }
2575
2093
  for (i = 0; i < boneData.length; i++) {
2576
2094
  data = boneData[i];
2577
-
2578
2095
  if (data.processed === false) {
2579
2096
  sortedBoneData.push(data);
2580
2097
  data.processed = true;
2581
2098
  }
2582
- } // setup arrays for skeleton creation
2583
-
2584
-
2099
+ }
2585
2100
  const bones = [];
2586
2101
  const boneInverses = [];
2587
-
2588
2102
  for (i = 0; i < sortedBoneData.length; i++) {
2589
2103
  data = sortedBoneData[i];
2590
2104
  bones.push(data.bone);
2591
2105
  boneInverses.push(data.boneInverse);
2592
2106
  }
2593
-
2594
- return new Skeleton(bones, boneInverses);
2107
+ return new THREE.Skeleton(bones, boneInverses);
2595
2108
  }
2596
-
2597
2109
  function buildBoneHierarchy(root, joints, boneData) {
2598
- // setup bone data from visual scene
2599
- root.traverse(function (object) {
2110
+ root.traverse(function(object) {
2600
2111
  if (object.isBone === true) {
2601
- let boneInverse; // retrieve the boneInverse from the controller data
2602
-
2112
+ let boneInverse;
2603
2113
  for (let i = 0; i < joints.length; i++) {
2604
2114
  const joint = joints[i];
2605
-
2606
2115
  if (joint.name === object.name) {
2607
2116
  boneInverse = joint.boneInverse;
2608
2117
  break;
2609
2118
  }
2610
2119
  }
2611
-
2612
- if (boneInverse === undefined) {
2613
- // Unfortunately, there can be joints in the visual scene that are not part of the
2614
- // corresponding controller. In this case, we have to create a dummy boneInverse matrix
2615
- // for the respective bone. This bone won't affect any vertices, because there are no skin indices
2616
- // and weights defined for it. But we still have to add the bone to the sorted bone list in order to
2617
- // ensure a correct animation of the model.
2618
- boneInverse = new Matrix4();
2120
+ if (boneInverse === void 0) {
2121
+ boneInverse = new THREE.Matrix4();
2619
2122
  }
2620
-
2621
- boneData.push({
2622
- bone: object,
2623
- boneInverse: boneInverse,
2624
- processed: false
2625
- });
2123
+ boneData.push({ bone: object, boneInverse, processed: false });
2626
2124
  }
2627
2125
  });
2628
2126
  }
2629
-
2630
2127
  function buildNode(data) {
2631
2128
  const objects = [];
2632
- const matrix = data.matrix;
2129
+ const matrix2 = data.matrix;
2633
2130
  const nodes = data.nodes;
2634
2131
  const type = data.type;
2635
2132
  const instanceCameras = data.instanceCameras;
2636
2133
  const instanceControllers = data.instanceControllers;
2637
2134
  const instanceLights = data.instanceLights;
2638
2135
  const instanceGeometries = data.instanceGeometries;
2639
- const instanceNodes = data.instanceNodes; // nodes
2640
-
2136
+ const instanceNodes = data.instanceNodes;
2641
2137
  for (let i = 0, l = nodes.length; i < l; i++) {
2642
2138
  objects.push(getNode(nodes[i]));
2643
- } // instance cameras
2644
-
2645
-
2139
+ }
2646
2140
  for (let i = 0, l = instanceCameras.length; i < l; i++) {
2647
2141
  const instanceCamera = getCamera(instanceCameras[i]);
2648
-
2649
2142
  if (instanceCamera !== null) {
2650
2143
  objects.push(instanceCamera.clone());
2651
2144
  }
2652
- } // instance controllers
2653
-
2654
-
2145
+ }
2655
2146
  for (let i = 0, l = instanceControllers.length; i < l; i++) {
2656
2147
  const instance = instanceControllers[i];
2657
2148
  const controller = getController(instance.id);
@@ -2660,272 +2151,196 @@ class ColladaLoader extends Loader {
2660
2151
  const skeletons = instance.skeletons;
2661
2152
  const joints = controller.skin.joints;
2662
2153
  const skeleton = buildSkeleton(skeletons, joints);
2663
-
2664
2154
  for (let j = 0, jl = newObjects.length; j < jl; j++) {
2665
- const object = newObjects[j];
2666
-
2667
- if (object.isSkinnedMesh) {
2668
- object.bind(skeleton, controller.skin.bindMatrix);
2669
- object.normalizeSkinWeights();
2155
+ const object2 = newObjects[j];
2156
+ if (object2.isSkinnedMesh) {
2157
+ object2.bind(skeleton, controller.skin.bindMatrix);
2158
+ object2.normalizeSkinWeights();
2670
2159
  }
2671
-
2672
- objects.push(object);
2160
+ objects.push(object2);
2673
2161
  }
2674
- } // instance lights
2675
-
2676
-
2162
+ }
2677
2163
  for (let i = 0, l = instanceLights.length; i < l; i++) {
2678
2164
  const instanceLight = getLight(instanceLights[i]);
2679
-
2680
2165
  if (instanceLight !== null) {
2681
2166
  objects.push(instanceLight.clone());
2682
2167
  }
2683
- } // instance geometries
2684
-
2685
-
2168
+ }
2686
2169
  for (let i = 0, l = instanceGeometries.length; i < l; i++) {
2687
- const instance = instanceGeometries[i]; // a single geometry instance in collada can lead to multiple object3Ds.
2688
- // this is the case when primitives are combined like triangles and lines
2689
-
2170
+ const instance = instanceGeometries[i];
2690
2171
  const geometries = getGeometry(instance.id);
2691
2172
  const newObjects = buildObjects(geometries, instance.materials);
2692
-
2693
2173
  for (let j = 0, jl = newObjects.length; j < jl; j++) {
2694
2174
  objects.push(newObjects[j]);
2695
2175
  }
2696
- } // instance nodes
2697
-
2698
-
2176
+ }
2699
2177
  for (let i = 0, l = instanceNodes.length; i < l; i++) {
2700
2178
  objects.push(getNode(instanceNodes[i]).clone());
2701
2179
  }
2702
-
2703
2180
  let object;
2704
-
2705
2181
  if (nodes.length === 0 && objects.length === 1) {
2706
2182
  object = objects[0];
2707
2183
  } else {
2708
- object = type === 'JOINT' ? new Bone() : new Group();
2709
-
2184
+ object = type === "JOINT" ? new THREE.Bone() : new THREE.Group();
2710
2185
  for (let i = 0; i < objects.length; i++) {
2711
2186
  object.add(objects[i]);
2712
2187
  }
2713
2188
  }
2714
-
2715
- object.name = type === 'JOINT' ? data.sid : data.name;
2716
- object.matrix.copy(matrix);
2189
+ object.name = type === "JOINT" ? data.sid : data.name;
2190
+ object.matrix.copy(matrix2);
2717
2191
  object.matrix.decompose(object.position, object.quaternion, object.scale);
2718
2192
  return object;
2719
2193
  }
2720
-
2721
- const fallbackMaterial = new MeshBasicMaterial({
2722
- color: 0xff00ff
2723
- });
2724
-
2194
+ const fallbackMaterial = new THREE.MeshBasicMaterial({ color: 16711935 });
2725
2195
  function resolveMaterialBinding(keys, instanceMaterials) {
2726
2196
  const materials = [];
2727
-
2728
2197
  for (let i = 0, l = keys.length; i < l; i++) {
2729
2198
  const id = instanceMaterials[keys[i]];
2730
-
2731
- if (id === undefined) {
2732
- console.warn('THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys[i]);
2199
+ if (id === void 0) {
2200
+ console.warn("THREE.ColladaLoader: Material with key %s not found. Apply fallback material.", keys[i]);
2733
2201
  materials.push(fallbackMaterial);
2734
2202
  } else {
2735
2203
  materials.push(getMaterial(id));
2736
2204
  }
2737
2205
  }
2738
-
2739
2206
  return materials;
2740
2207
  }
2741
-
2742
2208
  function buildObjects(geometries, instanceMaterials) {
2743
2209
  const objects = [];
2744
-
2745
2210
  for (const type in geometries) {
2746
2211
  const geometry = geometries[type];
2747
- const materials = resolveMaterialBinding(geometry.materialKeys, instanceMaterials); // handle case if no materials are defined
2748
-
2212
+ const materials = resolveMaterialBinding(geometry.materialKeys, instanceMaterials);
2749
2213
  if (materials.length === 0) {
2750
- if (type === 'lines' || type === 'linestrips') {
2751
- materials.push(new LineBasicMaterial());
2214
+ if (type === "lines" || type === "linestrips") {
2215
+ materials.push(new THREE.LineBasicMaterial());
2752
2216
  } else {
2753
- materials.push(new MeshPhongMaterial());
2217
+ materials.push(new THREE.MeshPhongMaterial());
2754
2218
  }
2755
- } // regard skinning
2756
-
2757
-
2758
- const skinning = geometry.data.attributes.skinIndex !== undefined; // choose between a single or multi materials (material array)
2759
-
2760
- const material = materials.length === 1 ? materials[0] : materials; // now create a specific 3D object
2761
-
2219
+ }
2220
+ const skinning = geometry.data.attributes.skinIndex !== void 0;
2221
+ const material = materials.length === 1 ? materials[0] : materials;
2762
2222
  let object;
2763
-
2764
2223
  switch (type) {
2765
- case 'lines':
2766
- object = new LineSegments(geometry.data, material);
2224
+ case "lines":
2225
+ object = new THREE.LineSegments(geometry.data, material);
2767
2226
  break;
2768
-
2769
- case 'linestrips':
2770
- object = new Line(geometry.data, material);
2227
+ case "linestrips":
2228
+ object = new THREE.Line(geometry.data, material);
2771
2229
  break;
2772
-
2773
- case 'triangles':
2774
- case 'polylist':
2230
+ case "triangles":
2231
+ case "polylist":
2775
2232
  if (skinning) {
2776
- object = new SkinnedMesh(geometry.data, material);
2233
+ object = new THREE.SkinnedMesh(geometry.data, material);
2777
2234
  } else {
2778
- object = new Mesh(geometry.data, material);
2235
+ object = new THREE.Mesh(geometry.data, material);
2779
2236
  }
2780
-
2781
2237
  break;
2782
2238
  }
2783
-
2784
2239
  objects.push(object);
2785
2240
  }
2786
-
2787
2241
  return objects;
2788
2242
  }
2789
-
2790
2243
  function hasNode(id) {
2791
- return library.nodes[id] !== undefined;
2244
+ return library.nodes[id] !== void 0;
2792
2245
  }
2793
-
2794
2246
  function getNode(id) {
2795
2247
  return getBuild(library.nodes[id], buildNode);
2796
- } // visual scenes
2797
-
2798
-
2799
- function parseVisualScene(xml) {
2248
+ }
2249
+ function parseVisualScene(xml2) {
2800
2250
  const data = {
2801
- name: xml.getAttribute('name'),
2251
+ name: xml2.getAttribute("name"),
2802
2252
  children: []
2803
2253
  };
2804
- prepareNodes(xml);
2805
- const elements = getElementsByTagName(xml, 'node');
2806
-
2254
+ prepareNodes(xml2);
2255
+ const elements = getElementsByTagName(xml2, "node");
2807
2256
  for (let i = 0; i < elements.length; i++) {
2808
2257
  data.children.push(parseNode(elements[i]));
2809
2258
  }
2810
-
2811
- library.visualScenes[xml.getAttribute('id')] = data;
2259
+ library.visualScenes[xml2.getAttribute("id")] = data;
2812
2260
  }
2813
-
2814
2261
  function buildVisualScene(data) {
2815
- const group = new Group();
2262
+ const group = new THREE.Group();
2816
2263
  group.name = data.name;
2817
2264
  const children = data.children;
2818
-
2819
2265
  for (let i = 0; i < children.length; i++) {
2820
2266
  const child = children[i];
2821
2267
  group.add(getNode(child.id));
2822
2268
  }
2823
-
2824
2269
  return group;
2825
2270
  }
2826
-
2827
2271
  function hasVisualScene(id) {
2828
- return library.visualScenes[id] !== undefined;
2272
+ return library.visualScenes[id] !== void 0;
2829
2273
  }
2830
-
2831
2274
  function getVisualScene(id) {
2832
2275
  return getBuild(library.visualScenes[id], buildVisualScene);
2833
- } // scenes
2834
-
2835
-
2836
- function parseScene(xml) {
2837
- const instance = getElementsByTagName(xml, 'instance_visual_scene')[0];
2838
- return getVisualScene(parseId(instance.getAttribute('url')));
2839
- }
2840
-
2276
+ }
2277
+ function parseScene(xml2) {
2278
+ const instance = getElementsByTagName(xml2, "instance_visual_scene")[0];
2279
+ return getVisualScene(parseId(instance.getAttribute("url")));
2280
+ }
2841
2281
  function setupAnimations() {
2842
2282
  const clips = library.clips;
2843
-
2844
2283
  if (isEmpty(clips) === true) {
2845
2284
  if (isEmpty(library.animations) === false) {
2846
- // if there are animations but no clips, we create a default clip for playback
2847
2285
  const tracks = [];
2848
-
2849
2286
  for (const id in library.animations) {
2850
2287
  const animationTracks = getAnimation(id);
2851
-
2852
2288
  for (let i = 0, l = animationTracks.length; i < l; i++) {
2853
2289
  tracks.push(animationTracks[i]);
2854
2290
  }
2855
2291
  }
2856
-
2857
- animations.push(new AnimationClip('default', -1, tracks));
2292
+ animations.push(new THREE.AnimationClip("default", -1, tracks));
2858
2293
  }
2859
2294
  } else {
2860
2295
  for (const id in clips) {
2861
2296
  animations.push(getAnimationClip(id));
2862
2297
  }
2863
2298
  }
2864
- } // convert the parser error element into text with each child elements text
2865
- // separated by new lines.
2866
-
2867
-
2868
- function parserErrorToText(parserError) {
2869
- let result = '';
2870
- const stack = [parserError];
2871
-
2299
+ }
2300
+ function parserErrorToText(parserError2) {
2301
+ let result = "";
2302
+ const stack = [parserError2];
2872
2303
  while (stack.length) {
2873
2304
  const node = stack.shift();
2874
-
2875
2305
  if (node.nodeType === Node.TEXT_NODE) {
2876
2306
  result += node.textContent;
2877
2307
  } else {
2878
- result += '\n';
2308
+ result += "\n";
2879
2309
  stack.push.apply(stack, node.childNodes);
2880
2310
  }
2881
2311
  }
2882
-
2883
2312
  return result.trim();
2884
2313
  }
2885
-
2886
2314
  if (text.length === 0) {
2887
- return {
2888
- scene: new Scene()
2889
- };
2315
+ return { scene: new THREE.Scene() };
2890
2316
  }
2891
-
2892
- const xml = new DOMParser().parseFromString(text, 'application/xml');
2893
- const collada = getElementsByTagName(xml, 'COLLADA')[0];
2894
- const parserError = xml.getElementsByTagName('parsererror')[0];
2895
-
2896
- if (parserError !== undefined) {
2897
- // Chrome will return parser error with a div in it
2898
- const errorElement = getElementsByTagName(parserError, 'div')[0];
2317
+ const xml = new DOMParser().parseFromString(text, "application/xml");
2318
+ const collada = getElementsByTagName(xml, "COLLADA")[0];
2319
+ const parserError = xml.getElementsByTagName("parsererror")[0];
2320
+ if (parserError !== void 0) {
2321
+ const errorElement = getElementsByTagName(parserError, "div")[0];
2899
2322
  let errorText;
2900
-
2901
2323
  if (errorElement) {
2902
2324
  errorText = errorElement.textContent;
2903
2325
  } else {
2904
2326
  errorText = parserErrorToText(parserError);
2905
2327
  }
2906
-
2907
- console.error('THREE.ColladaLoader: Failed to parse collada file.\n', errorText);
2328
+ console.error("THREE.ColladaLoader: Failed to parse collada file.\n", errorText);
2908
2329
  return null;
2909
- } // metadata
2910
-
2911
-
2912
- const version = collada.getAttribute('version');
2913
- console.log('THREE.ColladaLoader: File version', version);
2914
- const asset = parseAsset(getElementsByTagName(collada, 'asset')[0]);
2915
- const textureLoader = new TextureLoader(this.manager);
2330
+ }
2331
+ const version = collada.getAttribute("version");
2332
+ console.log("THREE.ColladaLoader: File version", version);
2333
+ const asset = parseAsset(getElementsByTagName(collada, "asset")[0]);
2334
+ const textureLoader = new THREE.TextureLoader(this.manager);
2916
2335
  textureLoader.setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin);
2917
2336
  let tgaLoader;
2918
-
2919
- if (TGALoader) {
2920
- tgaLoader = new TGALoader(this.manager);
2337
+ if (TGALoader.TGALoader) {
2338
+ tgaLoader = new TGALoader.TGALoader(this.manager);
2921
2339
  tgaLoader.setPath(this.resourcePath || path);
2922
- } //
2923
-
2924
-
2340
+ }
2925
2341
  const animations = [];
2926
2342
  let kinematics = {};
2927
- let count = 0; //
2928
-
2343
+ let count = 0;
2929
2344
  const library = {
2930
2345
  animations: {},
2931
2346
  clips: {},
@@ -2942,20 +2357,20 @@ class ColladaLoader extends Loader {
2942
2357
  physicsModels: {},
2943
2358
  kinematicsScenes: {}
2944
2359
  };
2945
- parseLibrary(collada, 'library_animations', 'animation', parseAnimation);
2946
- parseLibrary(collada, 'library_animation_clips', 'animation_clip', parseAnimationClip);
2947
- parseLibrary(collada, 'library_controllers', 'controller', parseController);
2948
- parseLibrary(collada, 'library_images', 'image', parseImage);
2949
- parseLibrary(collada, 'library_effects', 'effect', parseEffect);
2950
- parseLibrary(collada, 'library_materials', 'material', parseMaterial);
2951
- parseLibrary(collada, 'library_cameras', 'camera', parseCamera);
2952
- parseLibrary(collada, 'library_lights', 'light', parseLight);
2953
- parseLibrary(collada, 'library_geometries', 'geometry', parseGeometry);
2954
- parseLibrary(collada, 'library_nodes', 'node', parseNode);
2955
- parseLibrary(collada, 'library_visual_scenes', 'visual_scene', parseVisualScene);
2956
- parseLibrary(collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel);
2957
- parseLibrary(collada, 'library_physics_models', 'physics_model', parsePhysicsModel);
2958
- parseLibrary(collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene);
2360
+ parseLibrary(collada, "library_animations", "animation", parseAnimation);
2361
+ parseLibrary(collada, "library_animation_clips", "animation_clip", parseAnimationClip);
2362
+ parseLibrary(collada, "library_controllers", "controller", parseController);
2363
+ parseLibrary(collada, "library_images", "image", parseImage);
2364
+ parseLibrary(collada, "library_effects", "effect", parseEffect);
2365
+ parseLibrary(collada, "library_materials", "material", parseMaterial);
2366
+ parseLibrary(collada, "library_cameras", "camera", parseCamera);
2367
+ parseLibrary(collada, "library_lights", "light", parseLight);
2368
+ parseLibrary(collada, "library_geometries", "geometry", parseGeometry);
2369
+ parseLibrary(collada, "library_nodes", "node", parseNode);
2370
+ parseLibrary(collada, "library_visual_scenes", "visual_scene", parseVisualScene);
2371
+ parseLibrary(collada, "library_kinematics_models", "kinematics_model", parseKinematicsModel);
2372
+ parseLibrary(collada, "library_physics_models", "physics_model", parsePhysicsModel);
2373
+ parseLibrary(collada, "scene", "instance_kinematics_scene", parseKinematicsScene);
2959
2374
  buildLibrary(library.animations, buildAnimation);
2960
2375
  buildLibrary(library.clips, buildAnimationClip);
2961
2376
  buildLibrary(library.controllers, buildController);
@@ -2968,26 +2383,21 @@ class ColladaLoader extends Loader {
2968
2383
  buildLibrary(library.visualScenes, buildVisualScene);
2969
2384
  setupAnimations();
2970
2385
  setupKinematics();
2971
- const scene = parseScene(getElementsByTagName(collada, 'scene')[0]);
2386
+ const scene = parseScene(getElementsByTagName(collada, "scene")[0]);
2972
2387
  scene.animations = animations;
2973
-
2974
- if (asset.upAxis === 'Z_UP') {
2975
- scene.quaternion.setFromEuler(new Euler(-Math.PI / 2, 0, 0));
2388
+ if (asset.upAxis === "Z_UP") {
2389
+ scene.quaternion.setFromEuler(new THREE.Euler(-Math.PI / 2, 0, 0));
2976
2390
  }
2977
-
2978
2391
  scene.scale.multiplyScalar(asset.unit);
2979
2392
  return {
2980
2393
  get animations() {
2981
- console.warn('THREE.ColladaLoader: Please access animations over scene.animations now.');
2394
+ console.warn("THREE.ColladaLoader: Please access animations over scene.animations now.");
2982
2395
  return animations;
2983
2396
  },
2984
-
2985
- kinematics: kinematics,
2986
- library: library,
2987
- scene: scene
2397
+ kinematics,
2398
+ library,
2399
+ scene
2988
2400
  };
2989
2401
  }
2990
-
2991
2402
  }
2992
-
2993
- export { ColladaLoader };
2403
+ exports.ColladaLoader = ColladaLoader;