@playdrop/playdrop-cli 0.3.5-build.1 → 0.3.8-build.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 (1288) hide show
  1. package/config/client-meta.json +5 -5
  2. package/dist/apps/upload.js +1 -0
  3. package/dist/catalogue.d.ts +7 -0
  4. package/dist/catalogue.js +70 -33
  5. package/dist/commands/create.js +129 -70
  6. package/dist/commands/createRemixContent.d.ts +3 -0
  7. package/dist/commands/createRemixContent.js +310 -0
  8. package/dist/commands/generation.d.ts +0 -1
  9. package/dist/commands/generation.js +0 -18
  10. package/dist/commands/init.js +3 -3
  11. package/dist/commands/upload.js +11 -0
  12. package/dist/index.js +17 -4
  13. package/node_modules/@playdrop/ai-client/dist/index.d.ts +1 -1
  14. package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -1
  15. package/node_modules/@playdrop/ai-client/dist/index.js +1 -1
  16. package/node_modules/@playdrop/api-client/dist/client.d.ts +8 -2
  17. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
  18. package/node_modules/@playdrop/api-client/dist/client.js +2 -0
  19. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +3 -2
  20. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
  21. package/node_modules/@playdrop/api-client/dist/domains/apps.js +24 -2
  22. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +3 -1
  23. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -1
  24. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.js +19 -1
  25. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +3 -1
  26. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
  27. package/node_modules/@playdrop/api-client/dist/domains/assets.js +19 -1
  28. package/node_modules/@playdrop/api-client/dist/index.d.ts +3 -0
  29. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
  30. package/node_modules/@playdrop/api-client/dist/index.js +9 -0
  31. package/node_modules/@playdrop/config/client-meta.json +5 -5
  32. package/node_modules/@playdrop/types/dist/api.d.ts +22 -1
  33. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  34. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +1 -0
  35. package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
  36. package/node_modules/@playdrop/types/dist/asset.d.ts +27 -0
  37. package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
  38. package/node_modules/@playdrop/types/dist/graph.d.ts +21 -0
  39. package/node_modules/@playdrop/types/dist/graph.d.ts.map +1 -1
  40. package/node_modules/@playdrop/types/dist/graph.js +66 -0
  41. package/node_modules/@playdrop/types/dist/version.d.ts +1 -0
  42. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  43. package/node_modules/@playdrop/vox-three/dist/src/index.d.ts +1 -0
  44. package/node_modules/@playdrop/vox-three/dist/src/index.js +18 -0
  45. package/node_modules/@playdrop/vox-three/dist/src/index.js.map +1 -0
  46. package/node_modules/@playdrop/vox-three/dist/src/vox.d.ts +25 -0
  47. package/node_modules/@playdrop/vox-three/dist/src/vox.js +425 -0
  48. package/node_modules/@playdrop/vox-three/dist/src/vox.js.map +1 -0
  49. package/node_modules/@playdrop/vox-three/dist/test/vox.test.d.ts +1 -0
  50. package/node_modules/@playdrop/vox-three/dist/test/vox.test.js +79 -0
  51. package/node_modules/@playdrop/vox-three/dist/test/vox.test.js.map +1 -0
  52. package/node_modules/@playdrop/vox-three/package.json +25 -0
  53. package/node_modules/three/LICENSE +1 -1
  54. package/node_modules/three/README.md +7 -7
  55. package/node_modules/three/build/three.cjs +49655 -25499
  56. package/node_modules/three/build/three.core.js +58952 -0
  57. package/node_modules/three/build/three.core.min.js +6 -0
  58. package/node_modules/three/build/three.module.js +11162 -45962
  59. package/node_modules/three/build/three.module.min.js +2 -2
  60. package/node_modules/three/build/three.tsl.js +640 -0
  61. package/node_modules/three/build/three.tsl.min.js +6 -0
  62. package/node_modules/three/build/three.webgpu.js +79685 -0
  63. package/node_modules/three/build/three.webgpu.min.js +6 -0
  64. package/node_modules/three/build/three.webgpu.nodes.js +79456 -0
  65. package/node_modules/three/build/three.webgpu.nodes.min.js +6 -0
  66. package/node_modules/three/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  67. package/node_modules/three/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  68. package/node_modules/three/examples/jsm/Addons.js +8 -18
  69. package/node_modules/three/examples/jsm/animation/AnimationClipCreator.js +59 -7
  70. package/node_modules/three/examples/jsm/animation/CCDIKSolver.js +154 -45
  71. package/node_modules/three/examples/jsm/capabilities/WebGL.js +28 -23
  72. package/node_modules/three/examples/jsm/capabilities/WebGPU.js +19 -17
  73. package/node_modules/three/examples/jsm/controls/ArcballControls.js +636 -324
  74. package/node_modules/three/examples/jsm/controls/DragControls.js +332 -101
  75. package/node_modules/three/examples/jsm/controls/FirstPersonControls.js +291 -169
  76. package/node_modules/three/examples/jsm/controls/FlyControls.js +245 -191
  77. package/node_modules/three/examples/jsm/controls/MapControls.js +43 -9
  78. package/node_modules/three/examples/jsm/controls/OrbitControls.js +1156 -802
  79. package/node_modules/three/examples/jsm/controls/PointerLockControls.js +137 -35
  80. package/node_modules/three/examples/jsm/controls/TrackballControls.js +629 -456
  81. package/node_modules/three/examples/jsm/controls/TransformControls.js +442 -97
  82. package/node_modules/three/examples/jsm/csm/CSM.js +230 -17
  83. package/node_modules/three/examples/jsm/csm/CSMFrustum.js +61 -4
  84. package/node_modules/three/examples/jsm/csm/CSMHelper.js +50 -0
  85. package/node_modules/three/examples/jsm/csm/CSMShader.js +17 -5
  86. package/node_modules/three/examples/jsm/csm/CSMShadowNode.js +599 -0
  87. package/node_modules/three/examples/jsm/curves/CurveExtras.js +303 -31
  88. package/node_modules/three/examples/jsm/curves/NURBSCurve.js +91 -16
  89. package/node_modules/three/examples/jsm/curves/NURBSSurface.js +52 -6
  90. package/node_modules/three/examples/jsm/curves/NURBSUtils.js +102 -112
  91. package/node_modules/three/examples/jsm/curves/NURBSVolume.js +24 -4
  92. package/node_modules/three/examples/jsm/effects/AnaglyphEffect.js +39 -14
  93. package/node_modules/three/examples/jsm/effects/AsciiEffect.js +69 -22
  94. package/node_modules/three/examples/jsm/effects/OutlineEffect.js +61 -111
  95. package/node_modules/three/examples/jsm/effects/ParallaxBarrierEffect.js +48 -12
  96. package/node_modules/three/examples/jsm/effects/StereoEffect.js +37 -1
  97. package/node_modules/three/examples/jsm/environments/DebugEnvironment.js +50 -0
  98. package/node_modules/three/examples/jsm/environments/RoomEnvironment.js +82 -48
  99. package/node_modules/three/examples/jsm/exporters/DRACOExporter.js +59 -15
  100. package/node_modules/three/examples/jsm/exporters/EXRExporter.js +58 -19
  101. package/node_modules/three/examples/jsm/exporters/GLTFExporter.js +460 -174
  102. package/node_modules/three/examples/jsm/exporters/KTX2Exporter.js +80 -25
  103. package/node_modules/three/examples/jsm/exporters/OBJExporter.js +25 -1
  104. package/node_modules/three/examples/jsm/exporters/PLYExporter.js +51 -17
  105. package/node_modules/three/examples/jsm/exporters/STLExporter.js +27 -5
  106. package/node_modules/three/examples/jsm/exporters/USDZExporter.js +783 -268
  107. package/node_modules/three/examples/jsm/geometries/BoxLineGeometry.js +23 -0
  108. package/node_modules/three/examples/jsm/geometries/ConvexGeometry.js +19 -0
  109. package/node_modules/three/examples/jsm/geometries/DecalGeometry.js +94 -30
  110. package/node_modules/three/examples/jsm/geometries/ParametricFunctions.js +100 -0
  111. package/node_modules/three/examples/jsm/geometries/ParametricGeometry.js +38 -5
  112. package/node_modules/three/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
  113. package/node_modules/three/examples/jsm/geometries/TeapotGeometry.js +23 -38
  114. package/node_modules/three/examples/jsm/geometries/TextGeometry.js +48 -21
  115. package/node_modules/three/examples/jsm/gpgpu/BitonicSort.js +715 -0
  116. package/node_modules/three/examples/jsm/helpers/LightProbeHelper.js +79 -44
  117. package/node_modules/three/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
  118. package/node_modules/three/examples/jsm/helpers/OctreeHelper.js +36 -0
  119. package/node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
  120. package/node_modules/three/examples/jsm/helpers/RapierHelper.js +59 -0
  121. package/node_modules/three/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
  122. package/node_modules/three/examples/jsm/helpers/TextureHelper.js +28 -0
  123. package/node_modules/three/examples/jsm/helpers/TextureHelperGPU.js +214 -0
  124. package/node_modules/three/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
  125. package/node_modules/three/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
  126. package/node_modules/three/examples/jsm/helpers/ViewHelper.js +192 -65
  127. package/node_modules/three/examples/jsm/inspector/Inspector.js +427 -0
  128. package/node_modules/three/examples/jsm/inspector/RendererInspector.js +415 -0
  129. package/node_modules/three/examples/jsm/inspector/tabs/Console.js +204 -0
  130. package/node_modules/three/examples/jsm/inspector/tabs/Parameters.js +332 -0
  131. package/node_modules/three/examples/jsm/inspector/tabs/Performance.js +268 -0
  132. package/node_modules/three/examples/jsm/inspector/tabs/Viewer.js +166 -0
  133. package/node_modules/three/examples/jsm/inspector/ui/Graph.js +95 -0
  134. package/node_modules/three/examples/jsm/inspector/ui/Item.js +170 -0
  135. package/node_modules/three/examples/jsm/inspector/ui/List.js +75 -0
  136. package/node_modules/three/examples/jsm/inspector/ui/Profiler.js +170 -0
  137. package/node_modules/three/examples/jsm/inspector/ui/Style.js +654 -0
  138. package/node_modules/three/examples/jsm/inspector/ui/Tab.js +46 -0
  139. package/node_modules/three/examples/jsm/inspector/ui/Values.js +423 -0
  140. package/node_modules/three/examples/jsm/inspector/ui/utils.js +56 -0
  141. package/node_modules/three/examples/jsm/interactive/HTMLMesh.js +50 -21
  142. package/node_modules/three/examples/jsm/interactive/InteractiveGroup.js +170 -62
  143. package/node_modules/three/examples/jsm/interactive/SelectionBox.js +106 -9
  144. package/node_modules/three/examples/jsm/interactive/SelectionHelper.js +76 -30
  145. package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  146. package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  147. package/node_modules/three/examples/jsm/libs/demuxer_mp4.js +109 -0
  148. package/node_modules/three/examples/jsm/libs/draco/README.md +2 -2
  149. package/node_modules/three/examples/jsm/libs/fflate.module.js +694 -496
  150. package/node_modules/three/examples/jsm/libs/ktx-parse.module.js +1 -1
  151. package/node_modules/three/examples/jsm/libs/meshopt_decoder.module.js +75 -58
  152. package/node_modules/three/examples/jsm/libs/motion-controllers.module.js +1 -1
  153. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
  154. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
  155. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  156. package/node_modules/three/examples/jsm/libs/tween.module.js +32 -14
  157. package/node_modules/three/examples/jsm/lighting/TiledLighting.js +42 -0
  158. package/node_modules/three/examples/jsm/lights/LightProbeGenerator.js +65 -14
  159. package/node_modules/three/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
  160. package/node_modules/three/examples/jsm/lights/RectAreaLightUniformsLib.js +20 -59
  161. package/node_modules/three/examples/jsm/lines/Line2.js +41 -4
  162. package/node_modules/three/examples/jsm/lines/LineGeometry.js +80 -2
  163. package/node_modules/three/examples/jsm/lines/LineMaterial.js +100 -22
  164. package/node_modules/three/examples/jsm/lines/LineSegments2.js +69 -4
  165. package/node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
  166. package/node_modules/three/examples/jsm/lines/Wireframe.js +58 -6
  167. package/node_modules/three/examples/jsm/lines/WireframeGeometry2.js +27 -2
  168. package/node_modules/three/examples/jsm/lines/webgpu/Line2.js +46 -0
  169. package/node_modules/three/examples/jsm/lines/webgpu/LineSegments2.js +411 -0
  170. package/node_modules/three/examples/jsm/lines/webgpu/Wireframe.js +86 -0
  171. package/node_modules/three/examples/jsm/loaders/3DMLoader.js +86 -23
  172. package/node_modules/three/examples/jsm/loaders/3MFLoader.js +148 -5
  173. package/node_modules/three/examples/jsm/loaders/AMFLoader.js +32 -12
  174. package/node_modules/three/examples/jsm/loaders/BVHLoader.js +59 -12
  175. package/node_modules/three/examples/jsm/loaders/ColladaLoader.js +51 -12
  176. package/node_modules/three/examples/jsm/loaders/DDSLoader.js +68 -1
  177. package/node_modules/three/examples/jsm/loaders/DRACOLoader.js +149 -23
  178. package/node_modules/three/examples/jsm/loaders/EXRLoader.js +584 -109
  179. package/node_modules/three/examples/jsm/loaders/FBXLoader.js +165 -97
  180. package/node_modules/three/examples/jsm/loaders/FontLoader.js +83 -6
  181. package/node_modules/three/examples/jsm/loaders/GCodeLoader.js +37 -6
  182. package/node_modules/three/examples/jsm/loaders/GLTFLoader.js +337 -108
  183. package/node_modules/three/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
  184. package/node_modules/three/examples/jsm/loaders/HDRLoader.js +486 -0
  185. package/node_modules/three/examples/jsm/loaders/IESLoader.js +42 -0
  186. package/node_modules/three/examples/jsm/loaders/KMZLoader.js +33 -0
  187. package/node_modules/three/examples/jsm/loaders/KTX2Loader.js +441 -138
  188. package/node_modules/three/examples/jsm/loaders/KTXLoader.js +31 -10
  189. package/node_modules/three/examples/jsm/loaders/LDrawLoader.js +194 -145
  190. package/node_modules/three/examples/jsm/loaders/LUT3dlLoader.js +47 -25
  191. package/node_modules/three/examples/jsm/loaders/LUTCubeLoader.js +46 -23
  192. package/node_modules/three/examples/jsm/loaders/LUTImageLoader.js +79 -52
  193. package/node_modules/three/examples/jsm/loaders/LWOLoader.js +47 -20
  194. package/node_modules/three/examples/jsm/loaders/LottieLoader.js +54 -1
  195. package/node_modules/three/examples/jsm/loaders/MD2Loader.js +37 -1
  196. package/node_modules/three/examples/jsm/loaders/MDDLoader.js +57 -12
  197. package/node_modules/three/examples/jsm/loaders/MTLLoader.js +61 -35
  198. package/node_modules/three/examples/jsm/loaders/MaterialXLoader.js +291 -39
  199. package/node_modules/three/examples/jsm/loaders/NRRDLoader.js +38 -6
  200. package/node_modules/three/examples/jsm/loaders/OBJLoader.js +54 -4
  201. package/node_modules/three/examples/jsm/loaders/PCDLoader.js +183 -32
  202. package/node_modules/three/examples/jsm/loaders/PDBLoader.js +44 -4
  203. package/node_modules/three/examples/jsm/loaders/PLYLoader.js +78 -44
  204. package/node_modules/three/examples/jsm/loaders/PVRLoader.js +25 -6
  205. package/node_modules/three/examples/jsm/loaders/RGBELoader.js +6 -438
  206. package/node_modules/three/examples/jsm/loaders/STLLoader.js +51 -40
  207. package/node_modules/three/examples/jsm/loaders/SVGLoader.js +118 -24
  208. package/node_modules/three/examples/jsm/loaders/TDSLoader.js +92 -72
  209. package/node_modules/three/examples/jsm/loaders/TGALoader.js +23 -0
  210. package/node_modules/three/examples/jsm/loaders/TIFFLoader.js +23 -0
  211. package/node_modules/three/examples/jsm/loaders/TTFLoader.js +50 -3
  212. package/node_modules/three/examples/jsm/loaders/USDLoader.js +219 -0
  213. package/node_modules/three/examples/jsm/loaders/USDZLoader.js +4 -810
  214. package/node_modules/three/examples/jsm/loaders/UltraHDRLoader.js +630 -0
  215. package/node_modules/three/examples/jsm/loaders/VOXLoader.js +67 -2
  216. package/node_modules/three/examples/jsm/loaders/VRMLLoader.js +57 -21
  217. package/node_modules/three/examples/jsm/loaders/VTKLoader.js +119 -6
  218. package/node_modules/three/examples/jsm/loaders/XYZLoader.js +39 -2
  219. package/node_modules/three/examples/jsm/loaders/lwo/IFFParser.js +81 -78
  220. package/node_modules/three/examples/jsm/loaders/usd/USDAParser.js +741 -0
  221. package/node_modules/three/examples/jsm/loaders/usd/USDCParser.js +17 -0
  222. package/node_modules/three/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
  223. package/node_modules/three/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
  224. package/node_modules/three/examples/jsm/materials/MeshGouraudMaterial.js +9 -1
  225. package/node_modules/three/examples/jsm/materials/MeshPostProcessingMaterial.js +25 -2
  226. package/node_modules/three/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  227. package/node_modules/three/examples/jsm/math/Capsule.js +91 -14
  228. package/node_modules/three/examples/jsm/math/ColorConverter.js +22 -0
  229. package/node_modules/three/examples/jsm/math/ColorSpaces.js +147 -0
  230. package/node_modules/three/examples/jsm/math/ConvexHull.js +517 -93
  231. package/node_modules/three/examples/jsm/math/ImprovedNoise.js +32 -15
  232. package/node_modules/three/examples/jsm/math/Lut.js +113 -0
  233. package/node_modules/three/examples/jsm/math/MeshSurfaceSampler.js +78 -13
  234. package/node_modules/three/examples/jsm/math/OBB.js +141 -29
  235. package/node_modules/three/examples/jsm/math/Octree.js +177 -25
  236. package/node_modules/three/examples/jsm/math/SimplexNoise.js +68 -42
  237. package/node_modules/three/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
  238. package/node_modules/three/examples/jsm/misc/GPUComputationRenderer.js +105 -45
  239. package/node_modules/three/examples/jsm/misc/Gyroscope.js +12 -0
  240. package/node_modules/three/examples/jsm/misc/MD2Character.js +117 -2
  241. package/node_modules/three/examples/jsm/misc/MD2CharacterComplex.js +175 -11
  242. package/node_modules/three/examples/jsm/misc/MorphAnimMesh.js +44 -0
  243. package/node_modules/three/examples/jsm/misc/MorphBlendMesh.js +103 -0
  244. package/node_modules/three/examples/jsm/misc/ProgressiveLightMap.js +101 -54
  245. package/node_modules/three/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
  246. package/node_modules/three/examples/jsm/misc/RollerCoaster.js +57 -0
  247. package/node_modules/three/examples/jsm/misc/TubePainter.js +437 -40
  248. package/node_modules/three/examples/jsm/misc/Volume.js +123 -75
  249. package/node_modules/three/examples/jsm/misc/VolumeSlice.js +95 -48
  250. package/node_modules/three/examples/jsm/modifiers/CurveModifier.js +77 -47
  251. package/node_modules/three/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
  252. package/node_modules/three/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
  253. package/node_modules/three/examples/jsm/modifiers/SimplifyModifier.js +26 -11
  254. package/node_modules/three/examples/jsm/modifiers/TessellateModifier.js +35 -2
  255. package/node_modules/three/examples/jsm/objects/GroundedSkybox.js +25 -6
  256. package/node_modules/three/examples/jsm/objects/Lensflare.js +96 -4
  257. package/node_modules/three/examples/jsm/objects/LensflareMesh.js +376 -0
  258. package/node_modules/three/examples/jsm/objects/MarchingCubes.js +90 -5
  259. package/node_modules/three/examples/jsm/objects/Reflector.js +76 -2
  260. package/node_modules/three/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
  261. package/node_modules/three/examples/jsm/objects/Refractor.js +62 -0
  262. package/node_modules/three/examples/jsm/objects/ShadowMesh.js +54 -4
  263. package/node_modules/three/examples/jsm/objects/Sky.js +30 -12
  264. package/node_modules/three/examples/jsm/objects/SkyMesh.js +243 -0
  265. package/node_modules/three/examples/jsm/objects/Water.js +45 -5
  266. package/node_modules/three/examples/jsm/objects/Water2.js +44 -4
  267. package/node_modules/three/examples/jsm/objects/Water2Mesh.js +199 -0
  268. package/node_modules/three/examples/jsm/objects/WaterMesh.js +196 -0
  269. package/node_modules/three/examples/jsm/physics/AmmoPhysics.js +48 -0
  270. package/node_modules/three/examples/jsm/physics/JoltPhysics.js +330 -0
  271. package/node_modules/three/examples/jsm/physics/RapierPhysics.js +231 -19
  272. package/node_modules/three/examples/jsm/postprocessing/AfterimagePass.js +110 -29
  273. package/node_modules/three/examples/jsm/postprocessing/BloomPass.js +128 -26
  274. package/node_modules/three/examples/jsm/postprocessing/BokehPass.js +99 -22
  275. package/node_modules/three/examples/jsm/postprocessing/ClearPass.js +54 -3
  276. package/node_modules/three/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
  277. package/node_modules/three/examples/jsm/postprocessing/DotScreenPass.js +59 -10
  278. package/node_modules/three/examples/jsm/postprocessing/EffectComposer.js +135 -3
  279. package/node_modules/three/examples/jsm/postprocessing/FXAAPass.js +40 -0
  280. package/node_modules/three/examples/jsm/postprocessing/FilmPass.js +54 -5
  281. package/node_modules/three/examples/jsm/postprocessing/GTAOPass.js +202 -57
  282. package/node_modules/three/examples/jsm/postprocessing/GlitchPass.js +86 -37
  283. package/node_modules/three/examples/jsm/postprocessing/HalftonePass.js +65 -10
  284. package/node_modules/three/examples/jsm/postprocessing/LUTPass.js +43 -79
  285. package/node_modules/three/examples/jsm/postprocessing/MaskPass.js +91 -0
  286. package/node_modules/three/examples/jsm/postprocessing/OutlinePass.js +277 -155
  287. package/node_modules/three/examples/jsm/postprocessing/OutputPass.js +58 -14
  288. package/node_modules/three/examples/jsm/postprocessing/Pass.js +100 -4
  289. package/node_modules/three/examples/jsm/postprocessing/RenderPass.js +85 -1
  290. package/node_modules/three/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
  291. package/node_modules/three/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
  292. package/node_modules/three/examples/jsm/postprocessing/SAOPass.js +128 -56
  293. package/node_modules/three/examples/jsm/postprocessing/SMAAPass.js +106 -75
  294. package/node_modules/three/examples/jsm/postprocessing/SSAARenderPass.js +120 -35
  295. package/node_modules/three/examples/jsm/postprocessing/SSAOPass.js +174 -67
  296. package/node_modules/three/examples/jsm/postprocessing/SSRPass.js +268 -53
  297. package/node_modules/three/examples/jsm/postprocessing/SavePass.js +69 -16
  298. package/node_modules/three/examples/jsm/postprocessing/ShaderPass.js +65 -7
  299. package/node_modules/three/examples/jsm/postprocessing/TAARenderPass.js +79 -24
  300. package/node_modules/three/examples/jsm/postprocessing/TexturePass.js +72 -8
  301. package/node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js +125 -46
  302. package/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +122 -9
  303. package/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js +133 -8
  304. package/node_modules/three/examples/jsm/renderers/Projector.js +20 -2
  305. package/node_modules/three/examples/jsm/renderers/SVGRenderer.js +134 -5
  306. package/node_modules/three/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
  307. package/node_modules/three/examples/jsm/shaders/AfterimageShader.js +8 -3
  308. package/node_modules/three/examples/jsm/shaders/BasicShader.js +8 -1
  309. package/node_modules/three/examples/jsm/shaders/BleachBypassShader.js +11 -5
  310. package/node_modules/three/examples/jsm/shaders/BlendShader.js +8 -1
  311. package/node_modules/three/examples/jsm/shaders/BokehShader.js +9 -3
  312. package/node_modules/three/examples/jsm/shaders/BokehShader2.js +11 -4
  313. package/node_modules/three/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
  314. package/node_modules/three/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
  315. package/node_modules/three/examples/jsm/shaders/ColorifyShader.js +9 -3
  316. package/node_modules/three/examples/jsm/shaders/ConvolutionShader.js +9 -38
  317. package/node_modules/three/examples/jsm/shaders/CopyShader.js +8 -1
  318. package/node_modules/three/examples/jsm/shaders/DOFMipMapShader.js +10 -3
  319. package/node_modules/three/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
  320. package/node_modules/three/examples/jsm/shaders/DigitalGlitch.js +10 -7
  321. package/node_modules/three/examples/jsm/shaders/DotScreenShader.js +8 -3
  322. package/node_modules/three/examples/jsm/shaders/ExposureShader.js +8 -1
  323. package/node_modules/three/examples/jsm/shaders/FXAAShader.js +243 -233
  324. package/node_modules/three/examples/jsm/shaders/FilmShader.js +13 -0
  325. package/node_modules/three/examples/jsm/shaders/FocusShader.js +8 -3
  326. package/node_modules/three/examples/jsm/shaders/FreiChenShader.js +10 -3
  327. package/node_modules/three/examples/jsm/shaders/GTAOShader.js +37 -40
  328. package/node_modules/three/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
  329. package/node_modules/three/examples/jsm/shaders/GodRaysShader.js +20 -8
  330. package/node_modules/three/examples/jsm/shaders/HalftoneShader.js +13 -4
  331. package/node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
  332. package/node_modules/three/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
  333. package/node_modules/three/examples/jsm/shaders/HueSaturationShader.js +10 -3
  334. package/node_modules/three/examples/jsm/shaders/KaleidoShader.js +11 -4
  335. package/node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js +9 -7
  336. package/node_modules/three/examples/jsm/shaders/LuminosityShader.js +8 -2
  337. package/node_modules/three/examples/jsm/shaders/MirrorShader.js +10 -4
  338. package/node_modules/three/examples/jsm/shaders/NormalMapShader.js +7 -2
  339. package/node_modules/three/examples/jsm/shaders/OutputShader.js +24 -2
  340. package/node_modules/three/examples/jsm/shaders/PoissonDenoiseShader.js +24 -15
  341. package/node_modules/three/examples/jsm/shaders/RGBShiftShader.js +8 -1
  342. package/node_modules/three/examples/jsm/shaders/SAOShader.js +10 -1
  343. package/node_modules/three/examples/jsm/shaders/SMAAShader.js +24 -1
  344. package/node_modules/three/examples/jsm/shaders/SSAOShader.js +26 -5
  345. package/node_modules/three/examples/jsm/shaders/SSRShader.js +26 -1
  346. package/node_modules/three/examples/jsm/shaders/SepiaShader.js +8 -3
  347. package/node_modules/three/examples/jsm/shaders/SobelOperatorShader.js +9 -3
  348. package/node_modules/three/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
  349. package/node_modules/three/examples/jsm/shaders/TechnicolorShader.js +10 -4
  350. package/node_modules/three/examples/jsm/shaders/ToonShader.js +29 -6
  351. package/node_modules/three/examples/jsm/shaders/TriangleBlurShader.js +9 -4
  352. package/node_modules/three/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -4
  353. package/node_modules/three/examples/jsm/shaders/VelocityShader.js +8 -1
  354. package/node_modules/three/examples/jsm/shaders/VerticalBlurShader.js +9 -2
  355. package/node_modules/three/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
  356. package/node_modules/three/examples/jsm/shaders/VignetteShader.js +8 -3
  357. package/node_modules/three/examples/jsm/shaders/VolumeShader.js +11 -2
  358. package/node_modules/three/examples/jsm/shaders/WaterRefractionShader.js +11 -0
  359. package/node_modules/three/examples/jsm/textures/FlakesTexture.js +14 -0
  360. package/node_modules/three/examples/jsm/transpiler/AST.js +392 -31
  361. package/node_modules/three/examples/jsm/transpiler/GLSLDecoder.js +366 -136
  362. package/node_modules/three/examples/jsm/transpiler/Linker.js +327 -0
  363. package/node_modules/three/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  364. package/node_modules/three/examples/jsm/transpiler/TSLEncoder.js +336 -111
  365. package/node_modules/three/examples/jsm/transpiler/Transpiler.js +50 -1
  366. package/node_modules/three/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  367. package/node_modules/three/examples/jsm/transpiler/WGSLEncoder.js +812 -0
  368. package/node_modules/three/examples/jsm/tsl/display/AfterImageNode.js +244 -0
  369. package/node_modules/three/examples/jsm/tsl/display/AnaglyphPassNode.js +107 -0
  370. package/node_modules/three/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
  371. package/node_modules/three/examples/jsm/tsl/display/BleachBypass.js +33 -0
  372. package/node_modules/three/examples/jsm/tsl/display/BloomNode.js +524 -0
  373. package/node_modules/three/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
  374. package/node_modules/three/examples/jsm/tsl/display/DenoiseNode.js +334 -0
  375. package/node_modules/three/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
  376. package/node_modules/three/examples/jsm/tsl/display/DotScreenNode.js +104 -0
  377. package/node_modules/three/examples/jsm/tsl/display/FXAANode.js +365 -0
  378. package/node_modules/three/examples/jsm/tsl/display/FilmNode.js +101 -0
  379. package/node_modules/three/examples/jsm/tsl/display/GTAONode.js +570 -0
  380. package/node_modules/three/examples/jsm/tsl/display/GaussianBlurNode.js +380 -0
  381. package/node_modules/three/examples/jsm/tsl/display/LensflareNode.js +279 -0
  382. package/node_modules/three/examples/jsm/tsl/display/Lut3DNode.js +109 -0
  383. package/node_modules/three/examples/jsm/tsl/display/MotionBlur.js +33 -0
  384. package/node_modules/three/examples/jsm/tsl/display/OutlineNode.js +762 -0
  385. package/node_modules/three/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
  386. package/node_modules/three/examples/jsm/tsl/display/PixelationPassNode.js +334 -0
  387. package/node_modules/three/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
  388. package/node_modules/three/examples/jsm/tsl/display/SMAANode.js +768 -0
  389. package/node_modules/three/examples/jsm/tsl/display/SSAAPassNode.js +358 -0
  390. package/node_modules/three/examples/jsm/tsl/display/SSGINode.js +654 -0
  391. package/node_modules/three/examples/jsm/tsl/display/SSRNode.js +656 -0
  392. package/node_modules/three/examples/jsm/tsl/display/SSSNode.js +488 -0
  393. package/node_modules/three/examples/jsm/tsl/display/Sepia.js +24 -0
  394. package/node_modules/three/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
  395. package/node_modules/three/examples/jsm/tsl/display/StereoCompositePassNode.js +185 -0
  396. package/node_modules/three/examples/jsm/tsl/display/StereoPassNode.js +120 -0
  397. package/node_modules/three/examples/jsm/tsl/display/TRAANode.js +578 -0
  398. package/node_modules/three/examples/jsm/tsl/display/TransitionNode.js +141 -0
  399. package/node_modules/three/examples/jsm/tsl/display/boxBlur.js +65 -0
  400. package/node_modules/three/examples/jsm/tsl/display/hashBlur.js +54 -0
  401. package/node_modules/three/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
  402. package/node_modules/three/examples/jsm/tsl/math/Bayer.js +34 -0
  403. package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  404. package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  405. package/node_modules/three/examples/jsm/tsl/utils/Raymarching.js +70 -0
  406. package/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +109 -45
  407. package/node_modules/three/examples/jsm/utils/CameraUtils.js +15 -6
  408. package/node_modules/three/examples/jsm/utils/GeometryCompressionUtils.js +54 -146
  409. package/node_modules/three/examples/jsm/utils/GeometryUtils.js +32 -27
  410. package/node_modules/three/examples/jsm/utils/LDrawUtils.js +13 -4
  411. package/node_modules/three/examples/jsm/utils/SceneOptimizer.js +458 -0
  412. package/node_modules/three/examples/jsm/utils/SceneUtils.js +112 -3
  413. package/node_modules/three/examples/jsm/utils/ShadowMapViewer.js +51 -31
  414. package/node_modules/three/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
  415. package/node_modules/three/examples/jsm/utils/SkeletonUtils.js +145 -68
  416. package/node_modules/three/examples/jsm/utils/SortUtils.js +23 -8
  417. package/node_modules/three/examples/jsm/utils/UVsDebug.js +12 -4
  418. package/node_modules/three/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +19 -2
  419. package/node_modules/three/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
  420. package/node_modules/three/examples/jsm/utils/WorkerPool.js +67 -2
  421. package/node_modules/three/examples/jsm/webxr/ARButton.js +19 -0
  422. package/node_modules/three/examples/jsm/webxr/OculusHandModel.js +87 -2
  423. package/node_modules/three/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
  424. package/node_modules/three/examples/jsm/webxr/Text2D.js +20 -6
  425. package/node_modules/three/examples/jsm/webxr/VRButton.js +44 -5
  426. package/node_modules/three/examples/jsm/webxr/XRButton.js +23 -1
  427. package/node_modules/three/examples/jsm/webxr/XRControllerModelFactory.js +103 -4
  428. package/node_modules/three/examples/jsm/webxr/XREstimatedLight.js +35 -4
  429. package/node_modules/three/examples/jsm/webxr/XRHandMeshModel.js +37 -0
  430. package/node_modules/three/examples/jsm/webxr/XRHandModelFactory.js +101 -9
  431. package/node_modules/three/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
  432. package/node_modules/three/examples/jsm/webxr/XRPlanes.js +18 -0
  433. package/node_modules/three/package.json +25 -20
  434. package/node_modules/three/src/Three.Core.js +185 -0
  435. package/node_modules/three/src/Three.Legacy.js +0 -1
  436. package/node_modules/three/src/Three.TSL.js +633 -0
  437. package/node_modules/three/src/Three.WebGPU.Nodes.js +26 -0
  438. package/node_modules/three/src/Three.WebGPU.js +28 -0
  439. package/node_modules/three/src/Three.js +1 -176
  440. package/node_modules/three/src/animation/AnimationAction.js +262 -30
  441. package/node_modules/three/src/animation/AnimationClip.js +164 -9
  442. package/node_modules/three/src/animation/AnimationMixer.js +99 -15
  443. package/node_modules/three/src/animation/AnimationObjectGroup.js +45 -21
  444. package/node_modules/three/src/animation/AnimationUtils.js +169 -19
  445. package/node_modules/three/src/animation/KeyframeTrack.js +151 -16
  446. package/node_modules/three/src/animation/PropertyBinding.js +91 -16
  447. package/node_modules/three/src/animation/PropertyMixer.js +72 -5
  448. package/node_modules/three/src/animation/tracks/BooleanKeyframeTrack.js +42 -6
  449. package/node_modules/three/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  450. package/node_modules/three/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  451. package/node_modules/three/src/animation/tracks/QuaternionKeyframeTrack.js +31 -3
  452. package/node_modules/three/src/animation/tracks/StringKeyframeTrack.js +42 -2
  453. package/node_modules/three/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  454. package/node_modules/three/src/audio/Audio.js +388 -10
  455. package/node_modules/three/src/audio/AudioAnalyser.js +58 -1
  456. package/node_modules/three/src/audio/AudioContext.js +15 -0
  457. package/node_modules/three/src/audio/AudioListener.js +89 -10
  458. package/node_modules/three/src/audio/PositionalAudio.js +107 -0
  459. package/node_modules/three/src/cameras/ArrayCamera.js +37 -0
  460. package/node_modules/three/src/cameras/Camera.js +61 -0
  461. package/node_modules/three/src/cameras/CubeCamera.js +66 -0
  462. package/node_modules/three/src/cameras/OrthographicCamera.js +110 -1
  463. package/node_modules/three/src/cameras/PerspectiveCamera.js +174 -35
  464. package/node_modules/three/src/cameras/StereoCamera.js +48 -2
  465. package/node_modules/three/src/constants.js +1477 -18
  466. package/node_modules/three/src/core/BufferAttribute.js +417 -23
  467. package/node_modules/three/src/core/BufferGeometry.js +416 -49
  468. package/node_modules/three/src/core/Clock.js +62 -8
  469. package/node_modules/three/src/core/EventDispatcher.js +52 -8
  470. package/node_modules/three/src/core/GLBufferAttribute.js +113 -2
  471. package/node_modules/three/src/core/InstancedBufferAttribute.js +29 -0
  472. package/node_modules/three/src/core/InstancedBufferGeometry.js +20 -0
  473. package/node_modules/three/src/core/InstancedInterleavedBuffer.js +26 -0
  474. package/node_modules/three/src/core/InterleavedBuffer.js +141 -16
  475. package/node_modules/three/src/core/InterleavedBufferAttribute.js +200 -2
  476. package/node_modules/three/src/core/Layers.js +71 -10
  477. package/node_modules/three/src/core/Object3D.js +665 -54
  478. package/node_modules/three/src/core/Raycaster.js +160 -8
  479. package/node_modules/three/src/core/RenderTarget.js +297 -36
  480. package/node_modules/three/src/core/RenderTarget3D.js +48 -0
  481. package/node_modules/three/src/core/Timer.js +184 -0
  482. package/node_modules/three/src/core/Uniform.js +29 -0
  483. package/node_modules/three/src/core/UniformsGroup.js +84 -2
  484. package/node_modules/three/src/extras/Controls.js +120 -0
  485. package/node_modules/three/src/extras/DataUtils.js +50 -9
  486. package/node_modules/three/src/extras/Earcut.js +18 -779
  487. package/node_modules/three/src/extras/ImageUtils.js +22 -14
  488. package/node_modules/three/src/extras/PMREMGenerator.js +329 -64
  489. package/node_modules/three/src/extras/ShapeUtils.js +24 -2
  490. package/node_modules/three/src/extras/TextureUtils.js +293 -0
  491. package/node_modules/three/src/extras/core/Curve.js +156 -55
  492. package/node_modules/three/src/extras/core/CurvePath.js +63 -22
  493. package/node_modules/three/src/extras/core/Interpolations.js +34 -2
  494. package/node_modules/three/src/extras/core/Path.js +134 -1
  495. package/node_modules/three/src/extras/core/Shape.js +66 -3
  496. package/node_modules/three/src/extras/core/ShapePath.js +80 -4
  497. package/node_modules/three/src/extras/curves/ArcCurve.js +22 -0
  498. package/node_modules/three/src/extras/curves/CatmullRomCurve3.js +89 -18
  499. package/node_modules/three/src/extras/curves/CubicBezierCurve.js +67 -0
  500. package/node_modules/three/src/extras/curves/CubicBezierCurve3.js +50 -0
  501. package/node_modules/three/src/extras/curves/EllipseCurve.js +104 -2
  502. package/node_modules/three/src/extras/curves/LineCurve.js +36 -0
  503. package/node_modules/three/src/extras/curves/LineCurve3.js +36 -0
  504. package/node_modules/three/src/extras/curves/QuadraticBezierCurve.js +59 -0
  505. package/node_modules/three/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  506. package/node_modules/three/src/extras/curves/SplineCurve.js +48 -0
  507. package/node_modules/three/src/extras/lib/earcut.js +685 -0
  508. package/node_modules/three/src/geometries/BoxGeometry.js +39 -0
  509. package/node_modules/three/src/geometries/CapsuleGeometry.js +196 -11
  510. package/node_modules/three/src/geometries/CircleGeometry.js +41 -0
  511. package/node_modules/three/src/geometries/ConeGeometry.js +39 -0
  512. package/node_modules/three/src/geometries/CylinderGeometry.js +51 -4
  513. package/node_modules/three/src/geometries/DodecahedronGeometry.js +33 -0
  514. package/node_modules/three/src/geometries/EdgesGeometry.js +30 -2
  515. package/node_modules/three/src/geometries/ExtrudeGeometry.js +146 -50
  516. package/node_modules/three/src/geometries/IcosahedronGeometry.js +33 -0
  517. package/node_modules/three/src/geometries/LatheGeometry.js +44 -3
  518. package/node_modules/three/src/geometries/OctahedronGeometry.js +33 -0
  519. package/node_modules/three/src/geometries/PlaneGeometry.js +35 -0
  520. package/node_modules/three/src/geometries/PolyhedronGeometry.js +29 -0
  521. package/node_modules/three/src/geometries/RingGeometry.js +37 -0
  522. package/node_modules/three/src/geometries/ShapeGeometry.js +38 -0
  523. package/node_modules/three/src/geometries/SphereGeometry.js +38 -0
  524. package/node_modules/three/src/geometries/TetrahedronGeometry.js +33 -0
  525. package/node_modules/three/src/geometries/TorusGeometry.js +36 -0
  526. package/node_modules/three/src/geometries/TorusKnotGeometry.js +39 -0
  527. package/node_modules/three/src/geometries/TubeGeometry.js +50 -0
  528. package/node_modules/three/src/geometries/WireframeGeometry.js +32 -0
  529. package/node_modules/three/src/helpers/ArrowHelper.js +62 -5
  530. package/node_modules/three/src/helpers/AxesHelper.js +28 -0
  531. package/node_modules/three/src/helpers/Box3Helper.js +28 -0
  532. package/node_modules/three/src/helpers/BoxHelper.js +43 -7
  533. package/node_modules/three/src/helpers/CameraHelper.js +100 -27
  534. package/node_modules/three/src/helpers/DirectionalLightHelper.js +52 -0
  535. package/node_modules/three/src/helpers/GridHelper.js +26 -0
  536. package/node_modules/three/src/helpers/HemisphereLightHelper.js +39 -0
  537. package/node_modules/three/src/helpers/PlaneHelper.js +33 -0
  538. package/node_modules/three/src/helpers/PointLightHelper.js +43 -0
  539. package/node_modules/three/src/helpers/PolarGridHelper.js +30 -0
  540. package/node_modules/three/src/helpers/SkeletonHelper.js +73 -7
  541. package/node_modules/three/src/helpers/SpotLightHelper.js +58 -1
  542. package/node_modules/three/src/lights/AmbientLight.js +25 -0
  543. package/node_modules/three/src/lights/DirectionalLight.js +57 -0
  544. package/node_modules/three/src/lights/DirectionalLightShadow.js +15 -0
  545. package/node_modules/three/src/lights/HemisphereLight.js +32 -0
  546. package/node_modules/three/src/lights/Light.js +37 -0
  547. package/node_modules/three/src/lights/LightProbe.js +43 -0
  548. package/node_modules/three/src/lights/LightShadow.js +198 -7
  549. package/node_modules/three/src/lights/PointLight.js +59 -0
  550. package/node_modules/three/src/lights/PointLightShadow.js +22 -1
  551. package/node_modules/three/src/lights/RectAreaLight.js +59 -0
  552. package/node_modules/three/src/lights/SpotLight.js +102 -0
  553. package/node_modules/three/src/lights/SpotLightShadow.js +33 -3
  554. package/node_modules/three/src/lights/webgpu/IESSpotLight.js +46 -0
  555. package/node_modules/three/src/lights/webgpu/ProjectorLight.js +46 -0
  556. package/node_modules/three/src/loaders/AnimationLoader.js +34 -2
  557. package/node_modules/three/src/loaders/AudioLoader.js +34 -2
  558. package/node_modules/three/src/loaders/BufferGeometryLoader.js +38 -13
  559. package/node_modules/three/src/loaders/Cache.js +47 -2
  560. package/node_modules/three/src/loaders/CompressedTextureLoader.js +36 -3
  561. package/node_modules/three/src/loaders/CubeTextureLoader.js +45 -0
  562. package/node_modules/three/src/loaders/DataTextureLoader.js +45 -8
  563. package/node_modules/three/src/loaders/FileLoader.js +90 -6
  564. package/node_modules/three/src/loaders/ImageBitmapLoader.js +108 -11
  565. package/node_modules/three/src/loaders/ImageLoader.js +85 -8
  566. package/node_modules/three/src/loaders/Loader.js +144 -0
  567. package/node_modules/three/src/loaders/LoaderUtils.js +18 -34
  568. package/node_modules/three/src/loaders/LoadingManager.js +187 -0
  569. package/node_modules/three/src/loaders/MaterialLoader.js +70 -4
  570. package/node_modules/three/src/loaders/ObjectLoader.js +146 -30
  571. package/node_modules/three/src/loaders/TextureLoader.js +33 -0
  572. package/node_modules/three/src/loaders/nodes/NodeLoader.js +194 -0
  573. package/node_modules/three/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  574. package/node_modules/three/src/loaders/nodes/NodeObjectLoader.js +151 -0
  575. package/node_modules/three/src/materials/LineBasicMaterial.js +74 -1
  576. package/node_modules/three/src/materials/LineDashedMaterial.js +52 -1
  577. package/node_modules/three/src/materials/Material.js +504 -11
  578. package/node_modules/three/src/materials/MeshBasicMaterial.js +172 -3
  579. package/node_modules/three/src/materials/MeshDepthMaterial.js +94 -0
  580. package/node_modules/three/src/materials/MeshDistanceMaterial.js +76 -0
  581. package/node_modules/three/src/materials/MeshLambertMaterial.js +278 -1
  582. package/node_modules/three/src/materials/MeshMatcapMaterial.js +164 -0
  583. package/node_modules/three/src/materials/MeshNormalMaterial.js +114 -0
  584. package/node_modules/three/src/materials/MeshPhongMaterial.js +293 -1
  585. package/node_modules/three/src/materials/MeshPhysicalMaterial.js +316 -4
  586. package/node_modules/three/src/materials/MeshStandardMaterial.js +304 -3
  587. package/node_modules/three/src/materials/MeshToonMaterial.js +219 -0
  588. package/node_modules/three/src/materials/PointsMaterial.js +89 -0
  589. package/node_modules/three/src/materials/RawShaderMaterial.js +25 -0
  590. package/node_modules/three/src/materials/ShaderMaterial.js +215 -10
  591. package/node_modules/three/src/materials/ShadowMaterial.js +54 -0
  592. package/node_modules/three/src/materials/SpriteMaterial.js +82 -0
  593. package/node_modules/three/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +206 -100
  594. package/node_modules/three/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  595. package/node_modules/three/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  596. package/node_modules/three/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
  597. package/node_modules/three/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  598. package/node_modules/three/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  599. package/node_modules/three/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  600. package/node_modules/three/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  601. package/node_modules/three/src/materials/nodes/MeshPhysicalNodeMaterial.js +518 -0
  602. package/node_modules/three/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  603. package/node_modules/three/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  604. package/node_modules/three/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  605. package/node_modules/three/src/materials/nodes/NodeMaterial.js +1310 -0
  606. package/node_modules/three/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -2
  607. package/node_modules/three/src/materials/nodes/PointsNodeMaterial.js +211 -0
  608. package/node_modules/three/src/materials/nodes/ShadowNodeMaterial.js +76 -0
  609. package/node_modules/three/src/materials/nodes/SpriteNodeMaterial.js +186 -0
  610. package/node_modules/three/src/materials/nodes/VolumeNodeMaterial.js +81 -0
  611. package/node_modules/three/src/materials/nodes/manager/NodeMaterialObserver.js +613 -0
  612. package/node_modules/three/src/math/Box2.js +181 -4
  613. package/node_modules/three/src/math/Box3.js +277 -6
  614. package/node_modules/three/src/math/Color.js +355 -11
  615. package/node_modules/three/src/math/ColorManagement.js +161 -85
  616. package/node_modules/three/src/math/Cylindrical.js +65 -6
  617. package/node_modules/three/src/math/Euler.js +139 -5
  618. package/node_modules/three/src/math/Frustum.js +108 -9
  619. package/node_modules/three/src/math/FrustumArray.js +258 -0
  620. package/node_modules/three/src/math/Interpolant.js +87 -8
  621. package/node_modules/three/src/math/Line3.js +223 -2
  622. package/node_modules/three/src/math/MathUtils.js +408 -20
  623. package/node_modules/three/src/math/Matrix2.js +124 -0
  624. package/node_modules/three/src/math/Matrix3.js +229 -4
  625. package/node_modules/three/src/math/Matrix4.js +416 -30
  626. package/node_modules/three/src/math/Plane.js +164 -2
  627. package/node_modules/three/src/math/Quaternion.js +345 -86
  628. package/node_modules/three/src/math/Ray.js +162 -0
  629. package/node_modules/three/src/math/Sphere.js +175 -0
  630. package/node_modules/three/src/math/Spherical.js +74 -13
  631. package/node_modules/three/src/math/SphericalHarmonics3.js +112 -14
  632. package/node_modules/three/src/math/Triangle.js +230 -2
  633. package/node_modules/three/src/math/Vector2.js +396 -10
  634. package/node_modules/three/src/math/Vector3.js +557 -20
  635. package/node_modules/three/src/math/Vector4.js +428 -9
  636. package/node_modules/three/src/math/interpolants/CubicInterpolant.js +10 -1
  637. package/node_modules/three/src/math/interpolants/DiscreteInterpolant.js +10 -2
  638. package/node_modules/three/src/math/interpolants/LinearInterpolant.js +13 -0
  639. package/node_modules/three/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  640. package/node_modules/three/src/nodes/Nodes.js +148 -0
  641. package/node_modules/three/src/nodes/TSL.js +173 -0
  642. package/node_modules/three/src/nodes/accessors/AccessorsUtils.js +53 -0
  643. package/node_modules/three/src/nodes/accessors/Arrays.js +68 -0
  644. package/node_modules/three/src/nodes/accessors/BatchNode.js +163 -0
  645. package/node_modules/three/src/nodes/accessors/Bitangent.js +82 -0
  646. package/node_modules/three/src/nodes/accessors/BufferAttributeNode.js +340 -0
  647. package/node_modules/three/src/nodes/accessors/BufferNode.js +101 -0
  648. package/node_modules/three/src/nodes/accessors/BuiltinNode.js +63 -0
  649. package/node_modules/three/src/nodes/accessors/Camera.js +282 -0
  650. package/node_modules/three/src/nodes/accessors/ClippingNode.js +255 -0
  651. package/node_modules/three/src/nodes/accessors/CubeTextureNode.js +190 -0
  652. package/node_modules/three/src/nodes/accessors/InstanceNode.js +244 -0
  653. package/node_modules/three/src/nodes/accessors/InstancedMeshNode.js +50 -0
  654. package/node_modules/three/src/nodes/accessors/Lights.js +139 -0
  655. package/node_modules/three/src/nodes/accessors/MaterialNode.js +775 -0
  656. package/node_modules/three/src/nodes/accessors/MaterialProperties.js +59 -0
  657. package/node_modules/three/src/nodes/accessors/MaterialReferenceNode.js +85 -0
  658. package/node_modules/three/src/nodes/accessors/ModelNode.js +184 -0
  659. package/node_modules/three/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
  660. package/node_modules/three/{examples/jsm → src}/nodes/accessors/MorphNode.js +122 -57
  661. package/node_modules/three/src/nodes/accessors/Normal.js +243 -0
  662. package/node_modules/three/src/nodes/accessors/Object3DNode.js +268 -0
  663. package/node_modules/three/src/nodes/accessors/PointUVNode.js +55 -0
  664. package/node_modules/three/src/nodes/accessors/Position.js +90 -0
  665. package/node_modules/three/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  666. package/node_modules/three/src/nodes/accessors/ReferenceNode.js +424 -0
  667. package/node_modules/three/src/nodes/accessors/ReflectVector.js +36 -0
  668. package/node_modules/three/src/nodes/accessors/RendererReferenceNode.js +79 -0
  669. package/node_modules/three/src/nodes/accessors/SceneNode.js +145 -0
  670. package/node_modules/three/src/nodes/accessors/SkinningNode.js +327 -0
  671. package/node_modules/three/src/nodes/accessors/StorageBufferNode.js +416 -0
  672. package/node_modules/three/src/nodes/accessors/StorageTextureNode.js +264 -0
  673. package/node_modules/three/src/nodes/accessors/Tangent.js +70 -0
  674. package/node_modules/three/src/nodes/accessors/TangentUtils.js +46 -0
  675. package/node_modules/three/src/nodes/accessors/Texture3DNode.js +199 -0
  676. package/node_modules/three/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +28 -30
  677. package/node_modules/three/src/nodes/accessors/TextureNode.js +927 -0
  678. package/node_modules/three/src/nodes/accessors/TextureSizeNode.js +77 -0
  679. package/node_modules/three/src/nodes/accessors/UV.js +11 -0
  680. package/node_modules/three/src/nodes/accessors/UniformArrayNode.js +348 -0
  681. package/node_modules/three/src/nodes/accessors/UserDataNode.js +77 -0
  682. package/node_modules/three/src/nodes/accessors/VelocityNode.js +224 -0
  683. package/node_modules/three/src/nodes/accessors/VertexColorNode.js +110 -0
  684. package/node_modules/three/src/nodes/code/CodeNode.js +181 -0
  685. package/node_modules/three/src/nodes/code/ExpressionNode.js +68 -0
  686. package/node_modules/three/src/nodes/code/FunctionCallNode.js +187 -0
  687. package/node_modules/three/src/nodes/code/FunctionNode.js +183 -0
  688. package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableNode.js +253 -15
  689. package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +95 -9
  690. package/node_modules/three/src/nodes/core/ArrayNode.js +155 -0
  691. package/node_modules/three/src/nodes/core/AssignNode.js +202 -0
  692. package/node_modules/three/src/nodes/core/AttributeNode.js +168 -0
  693. package/node_modules/three/src/nodes/core/BypassNode.js +93 -0
  694. package/node_modules/three/src/nodes/core/ConstNode.js +67 -0
  695. package/node_modules/three/src/nodes/core/ContextNode.js +184 -0
  696. package/node_modules/three/src/nodes/core/IndexNode.js +164 -0
  697. package/node_modules/three/src/nodes/core/InputNode.js +136 -0
  698. package/node_modules/three/src/nodes/core/InspectorNode.js +128 -0
  699. package/node_modules/three/src/nodes/core/IsolateNode.js +133 -0
  700. package/node_modules/three/src/nodes/core/LightingModel.js +77 -0
  701. package/node_modules/three/src/nodes/core/MRTNode.js +150 -0
  702. package/node_modules/three/src/nodes/core/Node.js +1083 -0
  703. package/node_modules/three/src/nodes/core/NodeAttribute.js +53 -0
  704. package/node_modules/three/src/nodes/core/NodeBuilder.js +3081 -0
  705. package/node_modules/three/src/nodes/core/NodeCache.js +75 -0
  706. package/node_modules/three/src/nodes/core/NodeCode.js +46 -0
  707. package/node_modules/three/src/nodes/core/NodeFrame.js +306 -0
  708. package/node_modules/three/src/nodes/core/NodeFunction.js +69 -0
  709. package/node_modules/three/src/nodes/core/NodeFunctionInput.js +61 -0
  710. package/node_modules/three/src/nodes/core/NodeParser.js +23 -0
  711. package/node_modules/three/src/nodes/core/NodeUniform.js +91 -0
  712. package/node_modules/three/src/nodes/core/NodeUtils.js +406 -0
  713. package/node_modules/three/src/nodes/core/NodeVar.js +60 -0
  714. package/node_modules/three/src/nodes/core/NodeVarying.js +63 -0
  715. package/node_modules/three/src/nodes/core/OutputStructNode.js +103 -0
  716. package/node_modules/three/src/nodes/core/ParameterNode.js +94 -0
  717. package/node_modules/three/src/nodes/core/PropertyNode.js +351 -0
  718. package/node_modules/three/src/nodes/core/StackNode.js +377 -0
  719. package/node_modules/three/src/nodes/core/StructNode.js +120 -0
  720. package/node_modules/three/src/nodes/core/StructType.js +13 -0
  721. package/node_modules/three/src/nodes/core/StructTypeNode.js +154 -0
  722. package/node_modules/three/src/nodes/core/SubBuildNode.js +89 -0
  723. package/node_modules/three/src/nodes/core/TempNode.js +88 -0
  724. package/node_modules/three/src/nodes/core/UniformGroupNode.js +137 -0
  725. package/node_modules/three/src/nodes/core/UniformNode.js +243 -0
  726. package/node_modules/three/src/nodes/core/VarNode.js +342 -0
  727. package/node_modules/three/src/nodes/core/VaryingNode.js +227 -0
  728. package/node_modules/three/src/nodes/core/constants.js +68 -0
  729. package/node_modules/three/src/nodes/display/BlendModes.js +235 -0
  730. package/node_modules/three/src/nodes/display/BumpMapNode.js +117 -0
  731. package/node_modules/three/src/nodes/display/ColorAdjustment.js +141 -0
  732. package/node_modules/three/src/nodes/display/ColorSpaceFunctions.js +54 -0
  733. package/node_modules/three/src/nodes/display/ColorSpaceNode.js +164 -0
  734. package/node_modules/three/src/nodes/display/FrontFacingNode.js +102 -0
  735. package/node_modules/three/src/nodes/display/NormalMapNode.js +118 -0
  736. package/node_modules/three/src/nodes/display/PassNode.js +946 -0
  737. package/node_modules/three/src/nodes/display/PosterizeNode.js +65 -0
  738. package/node_modules/three/src/nodes/display/RenderOutputNode.js +150 -0
  739. package/node_modules/three/src/nodes/display/ScreenNode.js +290 -0
  740. package/node_modules/three/src/nodes/display/ToneMappingFunctions.js +242 -0
  741. package/node_modules/three/src/nodes/display/ToneMappingNode.js +147 -0
  742. package/node_modules/three/src/nodes/display/ToonOutlinePassNode.js +191 -0
  743. package/node_modules/three/src/nodes/display/ViewportDepthNode.js +294 -0
  744. package/node_modules/three/src/nodes/display/ViewportDepthTextureNode.js +67 -0
  745. package/node_modules/three/src/nodes/display/ViewportSharedTextureNode.js +73 -0
  746. package/node_modules/three/src/nodes/display/ViewportTextureNode.js +228 -0
  747. package/node_modules/three/src/nodes/fog/Fog.js +114 -0
  748. package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX.js +55 -0
  749. package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  750. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  751. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +9 -9
  752. package/node_modules/three/src/nodes/functions/BSDF/DFGApprox.js +71 -0
  753. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  754. package/node_modules/three/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  755. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  756. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  757. package/node_modules/three/src/nodes/functions/BSDF/LTC.js +175 -0
  758. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  759. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
  760. package/node_modules/three/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  761. package/node_modules/three/src/nodes/functions/BasicLightingModel.js +100 -0
  762. package/node_modules/three/src/nodes/functions/PhongLightingModel.js +99 -0
  763. package/node_modules/three/src/nodes/functions/PhysicalLightingModel.js +797 -0
  764. package/node_modules/three/src/nodes/functions/ShadowMaskModel.js +58 -0
  765. package/node_modules/three/src/nodes/functions/ToonLightingModel.js +70 -0
  766. package/node_modules/three/src/nodes/functions/VolumetricLightingModel.js +183 -0
  767. package/node_modules/three/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  768. package/node_modules/three/src/nodes/functions/material/getGeometryRoughness.js +19 -0
  769. package/node_modules/three/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  770. package/node_modules/three/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  771. package/node_modules/three/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  772. package/node_modules/three/src/nodes/geometry/RangeNode.js +208 -0
  773. package/node_modules/three/src/nodes/gpgpu/AtomicFunctionNode.js +274 -0
  774. package/node_modules/three/src/nodes/gpgpu/BarrierNode.js +89 -0
  775. package/node_modules/three/src/nodes/gpgpu/ComputeBuiltinNode.js +228 -0
  776. package/node_modules/three/src/nodes/gpgpu/ComputeNode.js +284 -0
  777. package/node_modules/three/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  778. package/node_modules/three/src/nodes/gpgpu/WorkgroupInfoNode.js +234 -0
  779. package/node_modules/three/src/nodes/lighting/AONode.js +45 -0
  780. package/node_modules/three/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +16 -8
  781. package/node_modules/three/src/nodes/lighting/AnalyticLightNode.js +256 -0
  782. package/node_modules/three/src/nodes/lighting/BasicEnvironmentNode.js +49 -0
  783. package/node_modules/three/src/nodes/lighting/BasicLightMapNode.js +49 -0
  784. package/node_modules/three/src/nodes/lighting/DirectionalLightNode.js +39 -0
  785. package/node_modules/three/src/nodes/lighting/EnvironmentNode.js +153 -0
  786. package/node_modules/three/src/nodes/lighting/HemisphereLightNode.js +87 -0
  787. package/node_modules/three/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +20 -10
  788. package/node_modules/three/src/nodes/lighting/IrradianceNode.js +44 -0
  789. package/node_modules/three/src/nodes/lighting/LightProbeNode.js +73 -0
  790. package/node_modules/three/src/nodes/lighting/LightUtils.js +25 -0
  791. package/node_modules/three/src/nodes/lighting/LightingContextNode.js +115 -0
  792. package/node_modules/three/src/nodes/lighting/LightingNode.js +36 -0
  793. package/node_modules/three/src/nodes/lighting/LightsNode.js +453 -0
  794. package/node_modules/three/src/nodes/lighting/PointLightNode.js +102 -0
  795. package/node_modules/three/src/nodes/lighting/PointShadowNode.js +312 -0
  796. package/node_modules/three/src/nodes/lighting/ProjectorLightNode.js +91 -0
  797. package/node_modules/three/src/nodes/lighting/RectAreaLightNode.js +133 -0
  798. package/node_modules/three/src/nodes/lighting/ShadowBaseNode.js +81 -0
  799. package/node_modules/three/src/nodes/lighting/ShadowFilterNode.js +276 -0
  800. package/node_modules/three/src/nodes/lighting/ShadowNode.js +811 -0
  801. package/node_modules/three/src/nodes/lighting/SpotLightNode.js +168 -0
  802. package/node_modules/three/src/nodes/materialx/MaterialXNodes.js +197 -0
  803. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
  804. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +625 -564
  805. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  806. package/node_modules/three/src/nodes/math/BitcastNode.js +156 -0
  807. package/node_modules/three/src/nodes/math/ConditionalNode.js +245 -0
  808. package/node_modules/three/src/nodes/math/Hash.js +21 -0
  809. package/node_modules/three/src/nodes/math/MathNode.js +1167 -0
  810. package/node_modules/three/src/nodes/math/MathUtils.js +54 -0
  811. package/node_modules/three/src/nodes/math/OperatorNode.js +751 -0
  812. package/node_modules/three/{examples/jsm → src}/nodes/math/TriNoise3D.js +34 -34
  813. package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +23 -7
  814. package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +11 -0
  815. package/node_modules/three/src/nodes/pmrem/PMREMNode.js +397 -0
  816. package/node_modules/three/src/nodes/pmrem/PMREMUtils.js +403 -0
  817. package/node_modules/three/src/nodes/procedural/Checker.js +22 -0
  818. package/node_modules/three/src/nodes/shapes/Shapes.js +33 -0
  819. package/node_modules/three/src/nodes/tsl/TSLBase.js +36 -0
  820. package/node_modules/three/src/nodes/tsl/TSLCore.js +1229 -0
  821. package/node_modules/three/src/nodes/utils/ArrayElementNode.js +77 -0
  822. package/node_modules/three/src/nodes/utils/ConvertNode.js +100 -0
  823. package/node_modules/three/src/nodes/utils/CubeMapNode.js +237 -0
  824. package/node_modules/three/src/nodes/utils/DebugNode.js +83 -0
  825. package/node_modules/three/src/nodes/utils/Discard.js +24 -0
  826. package/node_modules/three/src/nodes/utils/EquirectUV.js +27 -0
  827. package/node_modules/three/src/nodes/utils/EventNode.js +119 -0
  828. package/node_modules/three/src/nodes/utils/FlipNode.js +106 -0
  829. package/node_modules/three/src/nodes/utils/FunctionOverloadingNode.js +170 -0
  830. package/node_modules/three/src/nodes/utils/JoinNode.js +117 -0
  831. package/node_modules/three/src/nodes/utils/LoopNode.js +349 -0
  832. package/node_modules/three/src/nodes/utils/MatcapUV.js +22 -0
  833. package/node_modules/three/src/nodes/utils/MaxMipLevelNode.js +103 -0
  834. package/node_modules/three/src/nodes/utils/MemberNode.js +120 -0
  835. package/node_modules/three/src/nodes/utils/Oscillators.js +41 -0
  836. package/node_modules/three/src/nodes/utils/Packing.js +21 -0
  837. package/node_modules/three/src/nodes/utils/PostProcessingUtils.js +122 -0
  838. package/node_modules/three/src/nodes/utils/RTTNode.js +289 -0
  839. package/node_modules/three/src/nodes/utils/ReflectorNode.js +630 -0
  840. package/node_modules/three/src/nodes/utils/RemapNode.js +125 -0
  841. package/node_modules/three/{examples/jsm → src}/nodes/utils/RotateNode.js +48 -13
  842. package/node_modules/three/src/nodes/utils/SampleNode.js +91 -0
  843. package/node_modules/three/{examples/jsm → src}/nodes/utils/SetNode.js +50 -4
  844. package/node_modules/three/{examples/jsm → src}/nodes/utils/SplitNode.js +73 -6
  845. package/node_modules/three/src/nodes/utils/SpriteSheetUVNode.js +90 -0
  846. package/node_modules/three/src/nodes/utils/SpriteUtils.js +63 -0
  847. package/node_modules/three/src/nodes/utils/StorageArrayElementNode.js +143 -0
  848. package/node_modules/three/src/nodes/utils/Timer.js +26 -0
  849. package/node_modules/three/src/nodes/utils/TriplanarTextures.js +65 -0
  850. package/node_modules/three/src/nodes/utils/UVUtils.js +39 -0
  851. package/node_modules/three/src/nodes/utils/ViewportUtils.js +26 -0
  852. package/node_modules/three/src/objects/BatchedMesh.js +940 -305
  853. package/node_modules/three/src/objects/Bone.js +24 -0
  854. package/node_modules/three/src/objects/ClippingGroup.js +68 -0
  855. package/node_modules/three/src/objects/Group.js +24 -0
  856. package/node_modules/three/src/objects/InstancedMesh.js +182 -1
  857. package/node_modules/three/src/objects/LOD.js +120 -5
  858. package/node_modules/three/src/objects/Line.js +151 -44
  859. package/node_modules/three/src/objects/LineLoop.js +20 -0
  860. package/node_modules/three/src/objects/LineSegments.js +20 -1
  861. package/node_modules/three/src/objects/Mesh.js +91 -24
  862. package/node_modules/three/src/objects/Points.js +62 -0
  863. package/node_modules/three/src/objects/Skeleton.js +111 -5
  864. package/node_modules/three/src/objects/SkinnedMesh.js +102 -6
  865. package/node_modules/three/src/objects/Sprite.js +65 -1
  866. package/node_modules/three/src/renderers/WebGL3DRenderTarget.js +26 -0
  867. package/node_modules/three/src/renderers/WebGLArrayRenderTarget.js +26 -0
  868. package/node_modules/three/src/renderers/WebGLCubeRenderTarget.js +42 -15
  869. package/node_modules/three/src/renderers/WebGLRenderTarget.js +19 -0
  870. package/node_modules/three/src/renderers/WebGLRenderer.js +1222 -318
  871. package/node_modules/three/src/renderers/common/Animation.js +159 -0
  872. package/node_modules/three/{examples/jsm → src}/renderers/common/Attributes.js +45 -2
  873. package/node_modules/three/src/renderers/common/Backend.js +748 -0
  874. package/node_modules/three/src/renderers/common/Background.js +212 -0
  875. package/node_modules/three/src/renderers/common/BindGroup.js +61 -0
  876. package/node_modules/three/src/renderers/common/Binding.js +60 -0
  877. package/node_modules/three/src/renderers/common/Bindings.js +379 -0
  878. package/node_modules/three/src/renderers/common/Buffer.js +87 -0
  879. package/node_modules/three/src/renderers/common/BufferUtils.js +58 -0
  880. package/node_modules/three/src/renderers/common/BundleGroup.js +83 -0
  881. package/node_modules/three/src/renderers/common/CanvasTarget.js +341 -0
  882. package/node_modules/three/src/renderers/common/ChainMap.js +98 -0
  883. package/node_modules/three/src/renderers/common/ClippingContext.js +262 -0
  884. package/node_modules/three/src/renderers/common/Color4.js +77 -0
  885. package/node_modules/three/src/renderers/common/ComputePipeline.js +41 -0
  886. package/node_modules/three/{examples/jsm → src}/renderers/common/Constants.js +2 -1
  887. package/node_modules/three/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +43 -5
  888. package/node_modules/three/src/renderers/common/DataMap.js +90 -0
  889. package/node_modules/three/src/renderers/common/Geometries.js +370 -0
  890. package/node_modules/three/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  891. package/node_modules/three/src/renderers/common/Info.js +172 -0
  892. package/node_modules/three/src/renderers/common/InspectorBase.js +146 -0
  893. package/node_modules/three/src/renderers/common/Lighting.js +73 -0
  894. package/node_modules/three/src/renderers/common/Pipeline.js +35 -0
  895. package/node_modules/three/{examples/jsm → src}/renderers/common/Pipelines.js +150 -7
  896. package/node_modules/three/src/renderers/common/PostProcessing.js +226 -0
  897. package/node_modules/three/src/renderers/common/ProgrammableStage.js +78 -0
  898. package/node_modules/three/src/renderers/common/QuadMesh.js +112 -0
  899. package/node_modules/three/src/renderers/common/RenderBundle.js +24 -0
  900. package/node_modules/three/src/renderers/common/RenderBundles.js +67 -0
  901. package/node_modules/three/src/renderers/common/RenderContext.js +265 -0
  902. package/node_modules/three/src/renderers/common/RenderContexts.js +116 -0
  903. package/node_modules/three/src/renderers/common/RenderList.js +404 -0
  904. package/node_modules/three/src/renderers/common/RenderLists.js +77 -0
  905. package/node_modules/three/src/renderers/common/RenderObject.js +903 -0
  906. package/node_modules/three/src/renderers/common/RenderObjects.js +202 -0
  907. package/node_modules/three/src/renderers/common/RenderPipeline.js +40 -0
  908. package/node_modules/three/src/renderers/common/Renderer.js +3290 -0
  909. package/node_modules/three/src/renderers/common/RendererUtils.js +200 -0
  910. package/node_modules/three/src/renderers/common/SampledTexture.js +152 -0
  911. package/node_modules/three/src/renderers/common/Sampler.js +165 -0
  912. package/node_modules/three/src/renderers/common/Storage3DTexture.js +100 -0
  913. package/node_modules/three/src/renderers/common/StorageArrayTexture.js +84 -0
  914. package/node_modules/three/src/renderers/common/StorageBuffer.js +41 -0
  915. package/node_modules/three/src/renderers/common/StorageBufferAttribute.js +46 -0
  916. package/node_modules/three/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
  917. package/node_modules/three/src/renderers/common/StorageTexture.js +86 -0
  918. package/node_modules/three/src/renderers/common/Textures.js +544 -0
  919. package/node_modules/three/src/renderers/common/TimestampQueryPool.js +161 -0
  920. package/node_modules/three/src/renderers/common/Uniform.js +367 -0
  921. package/node_modules/three/src/renderers/common/UniformBuffer.js +34 -0
  922. package/node_modules/three/src/renderers/common/UniformsGroup.js +487 -0
  923. package/node_modules/three/src/renderers/common/XRManager.js +1676 -0
  924. package/node_modules/three/src/renderers/common/XRRenderTarget.js +91 -0
  925. package/node_modules/three/src/renderers/common/extras/PMREMGenerator.js +1034 -0
  926. package/node_modules/three/src/renderers/common/nodes/NodeBuilderState.js +152 -0
  927. package/node_modules/three/src/renderers/common/nodes/NodeLibrary.js +196 -0
  928. package/node_modules/three/src/renderers/common/nodes/NodeSampledTexture.js +140 -0
  929. package/node_modules/three/src/renderers/common/nodes/NodeSampler.js +62 -0
  930. package/node_modules/three/src/renderers/common/nodes/NodeStorageBuffer.js +61 -0
  931. package/node_modules/three/src/renderers/common/nodes/NodeUniform.js +418 -0
  932. package/node_modules/three/src/renderers/common/nodes/NodeUniformBuffer.js +53 -0
  933. package/node_modules/three/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
  934. package/node_modules/three/src/renderers/common/nodes/Nodes.js +840 -0
  935. package/node_modules/three/src/renderers/shaders/DFGLUTData.js +64 -0
  936. package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  937. package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  938. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  939. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  940. package/node_modules/three/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -33
  941. package/node_modules/three/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -22
  942. package/node_modules/three/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  943. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +2 -1
  944. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  945. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -3
  946. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  947. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  948. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  949. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +55 -20
  950. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  951. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  952. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +3 -11
  953. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +3 -17
  954. package/node_modules/three/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +3 -3
  955. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  956. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  957. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  958. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +12 -24
  959. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  960. package/node_modules/three/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  961. package/node_modules/three/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  962. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +59 -36
  963. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  964. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  965. package/node_modules/three/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +33 -2
  966. package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  967. package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  968. package/node_modules/three/src/renderers/shaders/ShaderChunk.js +2 -2
  969. package/node_modules/three/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  970. package/node_modules/three/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
  971. package/node_modules/three/src/renderers/shaders/ShaderLib/depth.glsl.js +21 -2
  972. package/node_modules/three/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  973. package/node_modules/three/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  974. package/node_modules/three/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
  975. package/node_modules/three/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  976. package/node_modules/three/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  977. package/node_modules/three/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
  978. package/node_modules/three/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  979. package/node_modules/three/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +5 -0
  980. package/node_modules/three/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  981. package/node_modules/three/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  982. package/node_modules/three/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
  983. package/node_modules/three/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  984. package/node_modules/three/src/renderers/shaders/ShaderLib.js +4 -2
  985. package/node_modules/three/src/renderers/shaders/UniformsLib.js +6 -4
  986. package/node_modules/three/src/renderers/shaders/UniformsUtils.js +31 -3
  987. package/node_modules/three/src/renderers/webgl/WebGLAttributes.js +46 -38
  988. package/node_modules/three/src/renderers/webgl/WebGLBackground.js +69 -5
  989. package/node_modules/three/src/renderers/webgl/WebGLBindingStates.js +14 -51
  990. package/node_modules/three/src/renderers/webgl/WebGLBufferRenderer.js +19 -22
  991. package/node_modules/three/src/renderers/webgl/WebGLCapabilities.js +39 -14
  992. package/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  993. package/node_modules/three/src/renderers/webgl/WebGLExtensions.js +8 -44
  994. package/node_modules/three/src/renderers/webgl/WebGLGeometries.js +0 -28
  995. package/node_modules/three/src/renderers/webgl/WebGLIndexedBufferRenderer.js +19 -21
  996. package/node_modules/three/src/renderers/webgl/WebGLInfo.js +3 -1
  997. package/node_modules/three/src/renderers/webgl/WebGLLights.js +21 -44
  998. package/node_modules/three/src/renderers/webgl/WebGLMaterials.js +33 -9
  999. package/node_modules/three/src/renderers/webgl/WebGLMorphtargets.js +78 -210
  1000. package/node_modules/three/src/renderers/webgl/WebGLProgram.js +103 -121
  1001. package/node_modules/three/src/renderers/webgl/WebGLPrograms.js +32 -26
  1002. package/node_modules/three/src/renderers/webgl/WebGLProperties.js +7 -0
  1003. package/node_modules/three/src/renderers/webgl/WebGLRenderStates.js +15 -9
  1004. package/node_modules/three/src/renderers/webgl/WebGLShadowMap.js +41 -29
  1005. package/node_modules/three/src/renderers/webgl/WebGLState.js +104 -100
  1006. package/node_modules/three/src/renderers/webgl/WebGLTextures.js +567 -408
  1007. package/node_modules/three/src/renderers/webgl/WebGLUniforms.js +12 -2
  1008. package/node_modules/three/src/renderers/webgl/WebGLUniformsGroups.js +13 -11
  1009. package/node_modules/three/src/renderers/webgl/WebGLUtils.js +11 -81
  1010. package/node_modules/three/src/renderers/webgl-fallback/WebGLBackend.js +2612 -0
  1011. package/node_modules/three/src/renderers/webgl-fallback/WebGLBufferRenderer.js +140 -0
  1012. package/node_modules/three/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1577 -0
  1013. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +76 -3
  1014. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +64 -0
  1015. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +5 -3
  1016. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
  1017. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +427 -21
  1018. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1309 -0
  1019. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
  1020. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +72 -43
  1021. package/node_modules/three/src/renderers/webgpu/WebGPUBackend.js +2482 -0
  1022. package/node_modules/three/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
  1023. package/node_modules/three/src/renderers/webgpu/WebGPURenderer.js +106 -0
  1024. package/node_modules/three/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
  1025. package/node_modules/three/src/renderers/webgpu/nodes/StandardNodeLibrary.js +100 -0
  1026. package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2247 -0
  1027. package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeFunction.js +187 -0
  1028. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  1029. package/node_modules/three/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +449 -0
  1030. package/node_modules/three/src/renderers/webgpu/utils/WebGPUBindingUtils.js +485 -0
  1031. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +24 -4
  1032. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +289 -72
  1033. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +160 -8
  1034. package/node_modules/three/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1576 -0
  1035. package/node_modules/three/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
  1036. package/node_modules/three/src/renderers/webgpu/utils/WebGPUUtils.js +247 -0
  1037. package/node_modules/three/src/renderers/webxr/WebXRController.js +87 -2
  1038. package/node_modules/three/src/renderers/webxr/WebXRDepthSensing.js +63 -13
  1039. package/node_modules/three/src/renderers/webxr/WebXRManager.js +323 -44
  1040. package/node_modules/three/src/scenes/Fog.js +60 -0
  1041. package/node_modules/three/src/scenes/FogExp2.js +51 -0
  1042. package/node_modules/three/src/scenes/Scene.js +103 -1
  1043. package/node_modules/three/src/textures/CanvasTexture.js +28 -0
  1044. package/node_modules/three/src/textures/CompressedArrayTexture.js +71 -0
  1045. package/node_modules/three/src/textures/CompressedCubeTexture.js +29 -0
  1046. package/node_modules/three/src/textures/CompressedTexture.js +64 -6
  1047. package/node_modules/three/src/textures/CubeTexture.js +52 -4
  1048. package/node_modules/three/src/textures/Data3DTexture.js +79 -2
  1049. package/node_modules/three/src/textures/DataArrayTexture.js +107 -0
  1050. package/node_modules/three/src/textures/DataTexture.js +65 -0
  1051. package/node_modules/three/src/textures/DepthTexture.js +59 -13
  1052. package/node_modules/three/src/textures/ExternalTexture.js +56 -0
  1053. package/node_modules/three/src/textures/FramebufferTexture.js +62 -0
  1054. package/node_modules/three/src/textures/Source.js +106 -4
  1055. package/node_modules/three/src/textures/Texture.js +490 -27
  1056. package/node_modules/three/src/textures/VideoFrameTexture.js +72 -0
  1057. package/node_modules/three/src/textures/VideoTexture.js +78 -6
  1058. package/node_modules/three/src/utils.js +128 -3
  1059. package/package.json +3 -2
  1060. package/node_modules/three/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  1061. package/node_modules/three/examples/jsm/animation/MMDPhysics.js +0 -1406
  1062. package/node_modules/three/examples/jsm/cameras/CinematicCamera.js +0 -208
  1063. package/node_modules/three/examples/jsm/effects/PeppersGhostEffect.js +0 -153
  1064. package/node_modules/three/examples/jsm/exporters/MMDExporter.js +0 -217
  1065. package/node_modules/three/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  1066. package/node_modules/three/examples/jsm/geometries/ParametricGeometries.js +0 -254
  1067. package/node_modules/three/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  1068. package/node_modules/three/examples/jsm/libs/mmdparser.module.js +0 -11530
  1069. package/node_modules/three/examples/jsm/lights/IESSpotLight.js +0 -25
  1070. package/node_modules/three/examples/jsm/loaders/LogLuvLoader.js +0 -606
  1071. package/node_modules/three/examples/jsm/loaders/MMDLoader.js +0 -2276
  1072. package/node_modules/three/examples/jsm/loaders/RGBMLoader.js +0 -1065
  1073. package/node_modules/three/examples/jsm/loaders/TiltLoader.js +0 -520
  1074. package/node_modules/three/examples/jsm/misc/Timer.js +0 -128
  1075. package/node_modules/three/examples/jsm/nodes/Nodes.js +0 -193
  1076. package/node_modules/three/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  1077. package/node_modules/three/examples/jsm/nodes/accessors/BufferAttributeNode.js +0 -127
  1078. package/node_modules/three/examples/jsm/nodes/accessors/BufferNode.js +0 -30
  1079. package/node_modules/three/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  1080. package/node_modules/three/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  1081. package/node_modules/three/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
  1082. package/node_modules/three/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  1083. package/node_modules/three/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
  1084. package/node_modules/three/examples/jsm/nodes/accessors/MaterialReferenceNode.js +0 -51
  1085. package/node_modules/three/examples/jsm/nodes/accessors/ModelNode.js +0 -33
  1086. package/node_modules/three/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
  1087. package/node_modules/three/examples/jsm/nodes/accessors/NormalNode.js +0 -96
  1088. package/node_modules/three/examples/jsm/nodes/accessors/Object3DNode.js +0 -150
  1089. package/node_modules/three/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  1090. package/node_modules/three/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  1091. package/node_modules/three/examples/jsm/nodes/accessors/ReferenceNode.js +0 -102
  1092. package/node_modules/three/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  1093. package/node_modules/three/examples/jsm/nodes/accessors/SceneNode.js +0 -52
  1094. package/node_modules/three/examples/jsm/nodes/accessors/SkinningNode.js +0 -103
  1095. package/node_modules/three/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -54
  1096. package/node_modules/three/examples/jsm/nodes/accessors/TangentNode.js +0 -103
  1097. package/node_modules/three/examples/jsm/nodes/accessors/TextureNode.js +0 -367
  1098. package/node_modules/three/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
  1099. package/node_modules/three/examples/jsm/nodes/accessors/TextureStoreNode.js +0 -82
  1100. package/node_modules/three/examples/jsm/nodes/accessors/UVNode.js +0 -47
  1101. package/node_modules/three/examples/jsm/nodes/accessors/UserDataNode.js +0 -29
  1102. package/node_modules/three/examples/jsm/nodes/accessors/VertexColorNode.js +0 -70
  1103. package/node_modules/three/examples/jsm/nodes/code/CodeNode.js +0 -78
  1104. package/node_modules/three/examples/jsm/nodes/code/ExpressionNode.js +0 -37
  1105. package/node_modules/three/examples/jsm/nodes/code/FunctionCallNode.js +0 -96
  1106. package/node_modules/three/examples/jsm/nodes/code/FunctionNode.js +0 -138
  1107. package/node_modules/three/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
  1108. package/node_modules/three/examples/jsm/nodes/core/AssignNode.js +0 -72
  1109. package/node_modules/three/examples/jsm/nodes/core/AttributeNode.js +0 -108
  1110. package/node_modules/three/examples/jsm/nodes/core/BypassNode.js +0 -45
  1111. package/node_modules/three/examples/jsm/nodes/core/CacheNode.js +0 -49
  1112. package/node_modules/three/examples/jsm/nodes/core/ConstNode.js +0 -32
  1113. package/node_modules/three/examples/jsm/nodes/core/ContextNode.js +0 -61
  1114. package/node_modules/three/examples/jsm/nodes/core/IndexNode.js +0 -66
  1115. package/node_modules/three/examples/jsm/nodes/core/InputNode.js +0 -83
  1116. package/node_modules/three/examples/jsm/nodes/core/LightingModel.js +0 -17
  1117. package/node_modules/three/examples/jsm/nodes/core/Node.js +0 -483
  1118. package/node_modules/three/examples/jsm/nodes/core/NodeAttribute.js +0 -15
  1119. package/node_modules/three/examples/jsm/nodes/core/NodeBuilder.js +0 -1256
  1120. package/node_modules/three/examples/jsm/nodes/core/NodeCache.js +0 -26
  1121. package/node_modules/three/examples/jsm/nodes/core/NodeCode.js +0 -15
  1122. package/node_modules/three/examples/jsm/nodes/core/NodeFrame.js +0 -143
  1123. package/node_modules/three/examples/jsm/nodes/core/NodeFunction.js +0 -22
  1124. package/node_modules/three/examples/jsm/nodes/core/NodeFunctionInput.js +0 -17
  1125. package/node_modules/three/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  1126. package/node_modules/three/examples/jsm/nodes/core/NodeParser.js +0 -11
  1127. package/node_modules/three/examples/jsm/nodes/core/NodeUniform.js +0 -40
  1128. package/node_modules/three/examples/jsm/nodes/core/NodeUtils.js +0 -210
  1129. package/node_modules/three/examples/jsm/nodes/core/NodeVar.js +0 -14
  1130. package/node_modules/three/examples/jsm/nodes/core/NodeVarying.js +0 -17
  1131. package/node_modules/three/examples/jsm/nodes/core/OutputStructNode.js +0 -62
  1132. package/node_modules/three/examples/jsm/nodes/core/ParameterNode.js +0 -33
  1133. package/node_modules/three/examples/jsm/nodes/core/PropertyNode.js +0 -72
  1134. package/node_modules/three/examples/jsm/nodes/core/StackNode.js +0 -89
  1135. package/node_modules/three/examples/jsm/nodes/core/StructTypeNode.js +0 -24
  1136. package/node_modules/three/examples/jsm/nodes/core/TempNode.js +0 -58
  1137. package/node_modules/three/examples/jsm/nodes/core/UniformGroup.js +0 -13
  1138. package/node_modules/three/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  1139. package/node_modules/three/examples/jsm/nodes/core/UniformNode.js +0 -80
  1140. package/node_modules/three/examples/jsm/nodes/core/VarNode.js +0 -60
  1141. package/node_modules/three/examples/jsm/nodes/core/VaryingNode.js +0 -65
  1142. package/node_modules/three/examples/jsm/nodes/core/constants.js +0 -28
  1143. package/node_modules/three/examples/jsm/nodes/display/AfterImageNode.js +0 -148
  1144. package/node_modules/three/examples/jsm/nodes/display/AnamorphicNode.js +0 -148
  1145. package/node_modules/three/examples/jsm/nodes/display/BlendModeNode.js +0 -99
  1146. package/node_modules/three/examples/jsm/nodes/display/BumpMapNode.js +0 -99
  1147. package/node_modules/three/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  1148. package/node_modules/three/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  1149. package/node_modules/three/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
  1150. package/node_modules/three/examples/jsm/nodes/display/GaussianBlurNode.js +0 -190
  1151. package/node_modules/three/examples/jsm/nodes/display/NormalMapNode.js +0 -108
  1152. package/node_modules/three/examples/jsm/nodes/display/PassNode.js +0 -183
  1153. package/node_modules/three/examples/jsm/nodes/display/PosterizeNode.js +0 -32
  1154. package/node_modules/three/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
  1155. package/node_modules/three/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  1156. package/node_modules/three/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  1157. package/node_modules/three/examples/jsm/nodes/display/ViewportNode.js +0 -134
  1158. package/node_modules/three/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
  1159. package/node_modules/three/examples/jsm/nodes/display/ViewportTextureNode.js +0 -75
  1160. package/node_modules/three/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
  1161. package/node_modules/three/examples/jsm/nodes/fog/FogNode.js +0 -38
  1162. package/node_modules/three/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
  1163. package/node_modules/three/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
  1164. package/node_modules/three/examples/jsm/nodes/functions/BSDF/DFGApprox.js +0 -30
  1165. package/node_modules/three/examples/jsm/nodes/functions/PhongLightingModel.js +0 -67
  1166. package/node_modules/three/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
  1167. package/node_modules/three/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  1168. package/node_modules/three/examples/jsm/nodes/geometry/RangeNode.js +0 -104
  1169. package/node_modules/three/examples/jsm/nodes/gpgpu/ComputeNode.js +0 -85
  1170. package/node_modules/three/examples/jsm/nodes/lighting/AONode.js +0 -27
  1171. package/node_modules/three/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
  1172. package/node_modules/three/examples/jsm/nodes/lighting/DirectionalLightNode.js +0 -40
  1173. package/node_modules/three/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
  1174. package/node_modules/three/examples/jsm/nodes/lighting/HemisphereLightNode.js +0 -55
  1175. package/node_modules/three/examples/jsm/nodes/lighting/LightNode.js +0 -57
  1176. package/node_modules/three/examples/jsm/nodes/lighting/LightUtils.js +0 -17
  1177. package/node_modules/three/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  1178. package/node_modules/three/examples/jsm/nodes/lighting/LightingNode.js +0 -21
  1179. package/node_modules/three/examples/jsm/nodes/lighting/LightsNode.js +0 -188
  1180. package/node_modules/three/examples/jsm/nodes/lighting/PointLightNode.js +0 -68
  1181. package/node_modules/three/examples/jsm/nodes/lighting/SpotLightNode.js +0 -89
  1182. package/node_modules/three/examples/jsm/nodes/loaders/NodeLoader.js +0 -108
  1183. package/node_modules/three/examples/jsm/nodes/loaders/NodeMaterialLoader.js +0 -59
  1184. package/node_modules/three/examples/jsm/nodes/loaders/NodeObjectLoader.js +0 -70
  1185. package/node_modules/three/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  1186. package/node_modules/three/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  1187. package/node_modules/three/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +0 -54
  1188. package/node_modules/three/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  1189. package/node_modules/three/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  1190. package/node_modules/three/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  1191. package/node_modules/three/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  1192. package/node_modules/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
  1193. package/node_modules/three/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  1194. package/node_modules/three/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
  1195. package/node_modules/three/examples/jsm/nodes/materials/NodeMaterial.js +0 -570
  1196. package/node_modules/three/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -39
  1197. package/node_modules/three/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
  1198. package/node_modules/three/examples/jsm/nodes/materialx/MaterialXNodes.js +0 -68
  1199. package/node_modules/three/examples/jsm/nodes/math/CondNode.js +0 -86
  1200. package/node_modules/three/examples/jsm/nodes/math/HashNode.js +0 -34
  1201. package/node_modules/three/examples/jsm/nodes/math/MathNode.js +0 -371
  1202. package/node_modules/three/examples/jsm/nodes/math/MathUtils.js +0 -15
  1203. package/node_modules/three/examples/jsm/nodes/math/OperatorNode.js +0 -274
  1204. package/node_modules/three/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  1205. package/node_modules/three/examples/jsm/nodes/shadernode/ShaderNode.js +0 -634
  1206. package/node_modules/three/examples/jsm/nodes/utils/ArrayElementNode.js +0 -41
  1207. package/node_modules/three/examples/jsm/nodes/utils/ConvertNode.js +0 -65
  1208. package/node_modules/three/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  1209. package/node_modules/three/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
  1210. package/node_modules/three/examples/jsm/nodes/utils/FunctionOverloadingNode.js +0 -95
  1211. package/node_modules/three/examples/jsm/nodes/utils/JoinNode.js +0 -61
  1212. package/node_modules/three/examples/jsm/nodes/utils/LoopNode.js +0 -198
  1213. package/node_modules/three/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
  1214. package/node_modules/three/examples/jsm/nodes/utils/MaxMipLevelNode.js +0 -46
  1215. package/node_modules/three/examples/jsm/nodes/utils/OscNode.js +0 -81
  1216. package/node_modules/three/examples/jsm/nodes/utils/PackingNode.js +0 -55
  1217. package/node_modules/three/examples/jsm/nodes/utils/ReflectorNode.js +0 -227
  1218. package/node_modules/three/examples/jsm/nodes/utils/RemapNode.js +0 -42
  1219. package/node_modules/three/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  1220. package/node_modules/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  1221. package/node_modules/three/examples/jsm/nodes/utils/SpriteSheetUVNode.js +0 -41
  1222. package/node_modules/three/examples/jsm/nodes/utils/TimerNode.js +0 -94
  1223. package/node_modules/three/examples/jsm/nodes/utils/TriplanarTexturesNode.js +0 -62
  1224. package/node_modules/three/examples/jsm/objects/InstancedPoints.js +0 -21
  1225. package/node_modules/three/examples/jsm/objects/QuadMesh.js +0 -66
  1226. package/node_modules/three/examples/jsm/renderers/common/Animation.js +0 -47
  1227. package/node_modules/three/examples/jsm/renderers/common/Backend.js +0 -195
  1228. package/node_modules/three/examples/jsm/renderers/common/Background.js +0 -134
  1229. package/node_modules/three/examples/jsm/renderers/common/Binding.js +0 -25
  1230. package/node_modules/three/examples/jsm/renderers/common/Bindings.js +0 -173
  1231. package/node_modules/three/examples/jsm/renderers/common/Buffer.js +0 -38
  1232. package/node_modules/three/examples/jsm/renderers/common/BufferUtils.js +0 -33
  1233. package/node_modules/three/examples/jsm/renderers/common/ChainMap.js +0 -89
  1234. package/node_modules/three/examples/jsm/renderers/common/Color4.js +0 -37
  1235. package/node_modules/three/examples/jsm/renderers/common/ComputePipeline.js +0 -17
  1236. package/node_modules/three/examples/jsm/renderers/common/DataMap.js +0 -54
  1237. package/node_modules/three/examples/jsm/renderers/common/Geometries.js +0 -215
  1238. package/node_modules/three/examples/jsm/renderers/common/Info.js +0 -107
  1239. package/node_modules/three/examples/jsm/renderers/common/Pipeline.js +0 -13
  1240. package/node_modules/three/examples/jsm/renderers/common/PostProcessing.js +0 -25
  1241. package/node_modules/three/examples/jsm/renderers/common/ProgrammableStage.js +0 -20
  1242. package/node_modules/three/examples/jsm/renderers/common/RenderContext.js +0 -41
  1243. package/node_modules/three/examples/jsm/renderers/common/RenderContexts.js +0 -74
  1244. package/node_modules/three/examples/jsm/renderers/common/RenderList.js +0 -186
  1245. package/node_modules/three/examples/jsm/renderers/common/RenderLists.js +0 -38
  1246. package/node_modules/three/examples/jsm/renderers/common/RenderObject.js +0 -178
  1247. package/node_modules/three/examples/jsm/renderers/common/RenderObjects.js +0 -91
  1248. package/node_modules/three/examples/jsm/renderers/common/RenderPipeline.js +0 -16
  1249. package/node_modules/three/examples/jsm/renderers/common/Renderer.js +0 -1247
  1250. package/node_modules/three/examples/jsm/renderers/common/SampledTexture.js +0 -83
  1251. package/node_modules/three/examples/jsm/renderers/common/Sampler.js +0 -18
  1252. package/node_modules/three/examples/jsm/renderers/common/StorageBuffer.js +0 -17
  1253. package/node_modules/three/examples/jsm/renderers/common/StorageBufferAttribute.js +0 -17
  1254. package/node_modules/three/examples/jsm/renderers/common/StorageTexture.js +0 -20
  1255. package/node_modules/three/examples/jsm/renderers/common/Textures.js +0 -354
  1256. package/node_modules/three/examples/jsm/renderers/common/Uniform.js +0 -140
  1257. package/node_modules/three/examples/jsm/renderers/common/UniformBuffer.js +0 -15
  1258. package/node_modules/three/examples/jsm/renderers/common/UniformsGroup.js +0 -299
  1259. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  1260. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
  1261. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampler.js +0 -15
  1262. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniform.js +0 -135
  1263. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +0 -44
  1264. package/node_modules/three/examples/jsm/renderers/common/nodes/Nodes.js +0 -495
  1265. package/node_modules/three/examples/jsm/renderers/webgl/WebGLBackend.js +0 -1362
  1266. package/node_modules/three/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +0 -679
  1267. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +0 -36
  1268. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +0 -36
  1269. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +0 -647
  1270. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -320
  1271. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
  1272. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -794
  1273. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
  1274. package/node_modules/three/examples/jsm/renderers/webgpu/WebGPUBackend.js +0 -1321
  1275. package/node_modules/three/examples/jsm/renderers/webgpu/WebGPURenderer.js +0 -53
  1276. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +0 -1103
  1277. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  1278. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +0 -287
  1279. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +0 -244
  1280. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +0 -1040
  1281. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +0 -93
  1282. package/node_modules/three/examples/jsm/shaders/MMDToonShader.js +0 -134
  1283. package/node_modules/three/examples/jsm/utils/GPUStatsPanel.js +0 -128
  1284. package/node_modules/three/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  1285. package/node_modules/three/src/renderers/WebGL1Renderer.js +0 -7
  1286. package/node_modules/three/src/renderers/WebGLMultipleRenderTargets.js +0 -82
  1287. package/node_modules/three/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
  1288. /package/node_modules/three/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
@@ -1,5 +1,5 @@
1
1
  import {
2
- EventDispatcher,
2
+ Controls,
3
3
  MOUSE,
4
4
  Quaternion,
5
5
  Spherical,
@@ -11,1493 +11,1847 @@ import {
11
11
  MathUtils
12
12
  } from 'three';
13
13
 
14
- // OrbitControls performs orbiting, dollying (zooming), and panning.
15
- // Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
16
- //
17
- // Orbit - left mouse / touch: one-finger move
18
- // Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
19
- // Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move
20
-
14
+ /**
15
+ * Fires when the camera has been transformed by the controls.
16
+ *
17
+ * @event OrbitControls#change
18
+ * @type {Object}
19
+ */
21
20
  const _changeEvent = { type: 'change' };
21
+
22
+ /**
23
+ * Fires when an interaction was initiated.
24
+ *
25
+ * @event OrbitControls#start
26
+ * @type {Object}
27
+ */
22
28
  const _startEvent = { type: 'start' };
29
+
30
+ /**
31
+ * Fires when an interaction has finished.
32
+ *
33
+ * @event OrbitControls#end
34
+ * @type {Object}
35
+ */
23
36
  const _endEvent = { type: 'end' };
37
+
24
38
  const _ray = new Ray();
25
39
  const _plane = new Plane();
26
- const TILT_LIMIT = Math.cos( 70 * MathUtils.DEG2RAD );
27
-
28
- class OrbitControls extends EventDispatcher {
29
-
30
- constructor( object, domElement ) {
31
-
32
- super();
33
-
34
- this.object = object;
35
- this.domElement = domElement;
36
- this.domElement.style.touchAction = 'none'; // disable touch scroll
37
-
38
- // Set to false to disable this control
39
- this.enabled = true;
40
-
41
- // "target" sets the location of focus, where the object orbits around
40
+ const _TILT_LIMIT = Math.cos( 70 * MathUtils.DEG2RAD );
41
+
42
+ const _v = new Vector3();
43
+ const _twoPI = 2 * Math.PI;
44
+
45
+ const _STATE = {
46
+ NONE: - 1,
47
+ ROTATE: 0,
48
+ DOLLY: 1,
49
+ PAN: 2,
50
+ TOUCH_ROTATE: 3,
51
+ TOUCH_PAN: 4,
52
+ TOUCH_DOLLY_PAN: 5,
53
+ TOUCH_DOLLY_ROTATE: 6
54
+ };
55
+ const _EPS = 0.000001;
56
+
57
+
58
+ /**
59
+ * Orbit controls allow the camera to orbit around a target.
60
+ *
61
+ * OrbitControls performs orbiting, dollying (zooming), and panning. Unlike {@link TrackballControls},
62
+ * it maintains the "up" direction `object.up` (+Y by default).
63
+ *
64
+ * - Orbit: Left mouse / touch: one-finger move.
65
+ * - Zoom: Middle mouse, or mousewheel / touch: two-finger spread or squish.
66
+ * - Pan: Right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move.
67
+ *
68
+ * ```js
69
+ * const controls = new OrbitControls( camera, renderer.domElement );
70
+ *
71
+ * // controls.update() must be called after any manual changes to the camera's transform
72
+ * camera.position.set( 0, 20, 100 );
73
+ * controls.update();
74
+ *
75
+ * function animate() {
76
+ *
77
+ * // required if controls.enableDamping or controls.autoRotate are set to true
78
+ * controls.update();
79
+ *
80
+ * renderer.render( scene, camera );
81
+ *
82
+ * }
83
+ * ```
84
+ *
85
+ * @augments Controls
86
+ * @three_import import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
87
+ */
88
+ class OrbitControls extends Controls {
89
+
90
+ /**
91
+ * Constructs a new controls instance.
92
+ *
93
+ * @param {Object3D} object - The object that is managed by the controls.
94
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
95
+ */
96
+ constructor( object, domElement = null ) {
97
+
98
+ super( object, domElement );
99
+
100
+ this.state = _STATE.NONE;
101
+
102
+ /**
103
+ * The focus point of the controls, the `object` orbits around this.
104
+ * It can be updated manually at any point to change the focus of the controls.
105
+ *
106
+ * @type {Vector3}
107
+ */
42
108
  this.target = new Vector3();
43
109
 
44
- // Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect
110
+ /**
111
+ * The focus point of the `minTargetRadius` and `maxTargetRadius` limits.
112
+ * It can be updated manually at any point to change the center of interest
113
+ * for the `target`.
114
+ *
115
+ * @type {Vector3}
116
+ */
45
117
  this.cursor = new Vector3();
46
118
 
47
- // How far you can dolly in and out ( PerspectiveCamera only )
119
+ /**
120
+ * How far you can dolly in (perspective camera only).
121
+ *
122
+ * @type {number}
123
+ * @default 0
124
+ */
48
125
  this.minDistance = 0;
126
+
127
+ /**
128
+ * How far you can dolly out (perspective camera only).
129
+ *
130
+ * @type {number}
131
+ * @default Infinity
132
+ */
49
133
  this.maxDistance = Infinity;
50
134
 
51
- // How far you can zoom in and out ( OrthographicCamera only )
135
+ /**
136
+ * How far you can zoom in (orthographic camera only).
137
+ *
138
+ * @type {number}
139
+ * @default 0
140
+ */
52
141
  this.minZoom = 0;
142
+
143
+ /**
144
+ * How far you can zoom out (orthographic camera only).
145
+ *
146
+ * @type {number}
147
+ * @default Infinity
148
+ */
53
149
  this.maxZoom = Infinity;
54
150
 
55
- // Limit camera target within a spherical area around the cursor
151
+ /**
152
+ * How close you can get the target to the 3D `cursor`.
153
+ *
154
+ * @type {number}
155
+ * @default 0
156
+ */
56
157
  this.minTargetRadius = 0;
57
- this.maxTargetRadius = Infinity;
58
158
 
59
- // How far you can orbit vertically, upper and lower limits.
60
- // Range is 0 to Math.PI radians.
61
- this.minPolarAngle = 0; // radians
62
- this.maxPolarAngle = Math.PI; // radians
63
-
64
- // How far you can orbit horizontally, upper and lower limits.
65
- // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )
66
- this.minAzimuthAngle = - Infinity; // radians
67
- this.maxAzimuthAngle = Infinity; // radians
159
+ /**
160
+ * How far you can move the target from the 3D `cursor`.
161
+ *
162
+ * @type {number}
163
+ * @default Infinity
164
+ */
165
+ this.maxTargetRadius = Infinity;
68
166
 
69
- // Set to true to enable damping (inertia)
70
- // If damping is enabled, you must call controls.update() in your animation loop
167
+ /**
168
+ * How far you can orbit vertically, lower limit. Range is `[0, Math.PI]` radians.
169
+ *
170
+ * @type {number}
171
+ * @default 0
172
+ */
173
+ this.minPolarAngle = 0;
174
+
175
+ /**
176
+ * How far you can orbit vertically, upper limit. Range is `[0, Math.PI]` radians.
177
+ *
178
+ * @type {number}
179
+ * @default Math.PI
180
+ */
181
+ this.maxPolarAngle = Math.PI;
182
+
183
+ /**
184
+ * How far you can orbit horizontally, lower limit. If set, the interval `[ min, max ]`
185
+ * must be a sub-interval of `[ - 2 PI, 2 PI ]`, with `( max - min < 2 PI )`.
186
+ *
187
+ * @type {number}
188
+ * @default -Infinity
189
+ */
190
+ this.minAzimuthAngle = - Infinity;
191
+
192
+ /**
193
+ * How far you can orbit horizontally, upper limit. If set, the interval `[ min, max ]`
194
+ * must be a sub-interval of `[ - 2 PI, 2 PI ]`, with `( max - min < 2 PI )`.
195
+ *
196
+ * @type {number}
197
+ * @default -Infinity
198
+ */
199
+ this.maxAzimuthAngle = Infinity;
200
+
201
+ /**
202
+ * Set to `true` to enable damping (inertia), which can be used to give a sense of weight
203
+ * to the controls. Note that if this is enabled, you must call `update()` in your animation
204
+ * loop.
205
+ *
206
+ * @type {boolean}
207
+ * @default false
208
+ */
71
209
  this.enableDamping = false;
210
+
211
+ /**
212
+ * The damping inertia used if `enableDamping` is set to `true`.
213
+ *
214
+ * Note that for this to work, you must call `update()` in your animation loop.
215
+ *
216
+ * @type {number}
217
+ * @default 0.05
218
+ */
72
219
  this.dampingFactor = 0.05;
73
220
 
74
- // This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
75
- // Set to false to disable zooming
221
+ /**
222
+ * Enable or disable zooming (dollying) of the camera.
223
+ *
224
+ * @type {boolean}
225
+ * @default true
226
+ */
76
227
  this.enableZoom = true;
228
+
229
+ /**
230
+ * Speed of zooming / dollying.
231
+ *
232
+ * @type {number}
233
+ * @default 1
234
+ */
77
235
  this.zoomSpeed = 1.0;
78
236
 
79
- // Set to false to disable rotating
237
+ /**
238
+ * Enable or disable horizontal and vertical rotation of the camera.
239
+ *
240
+ * Note that it is possible to disable a single axis by setting the min and max of the
241
+ * `minPolarAngle` or `minAzimuthAngle` to the same value, which will cause the vertical
242
+ * or horizontal rotation to be fixed at that value.
243
+ *
244
+ * @type {boolean}
245
+ * @default true
246
+ */
80
247
  this.enableRotate = true;
248
+
249
+ /**
250
+ * Speed of rotation.
251
+ *
252
+ * @type {number}
253
+ * @default 1
254
+ */
81
255
  this.rotateSpeed = 1.0;
82
256
 
83
- // Set to false to disable panning
257
+ /**
258
+ * How fast to rotate the camera when the keyboard is used.
259
+ *
260
+ * @type {number}
261
+ * @default 1
262
+ */
263
+ this.keyRotateSpeed = 1.0;
264
+
265
+ /**
266
+ * Enable or disable camera panning.
267
+ *
268
+ * @type {boolean}
269
+ * @default true
270
+ */
84
271
  this.enablePan = true;
272
+
273
+ /**
274
+ * Speed of panning.
275
+ *
276
+ * @type {number}
277
+ * @default 1
278
+ */
85
279
  this.panSpeed = 1.0;
86
- this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up
87
- this.keyPanSpeed = 7.0; // pixels moved per arrow key push
280
+
281
+ /**
282
+ * Defines how the camera's position is translated when panning. If `true`, the camera pans
283
+ * in screen space. Otherwise, the camera pans in the plane orthogonal to the camera's up
284
+ * direction.
285
+ *
286
+ * @type {boolean}
287
+ * @default true
288
+ */
289
+ this.screenSpacePanning = true;
290
+
291
+ /**
292
+ * How fast to pan the camera when the keyboard is used in
293
+ * pixels per keypress.
294
+ *
295
+ * @type {number}
296
+ * @default 7
297
+ */
298
+ this.keyPanSpeed = 7.0;
299
+
300
+ /**
301
+ * Setting this property to `true` allows to zoom to the cursor's position.
302
+ *
303
+ * @type {boolean}
304
+ * @default false
305
+ */
88
306
  this.zoomToCursor = false;
89
307
 
90
- // Set to true to automatically rotate around the target
91
- // If auto-rotate is enabled, you must call controls.update() in your animation loop
308
+ /**
309
+ * Set to true to automatically rotate around the target
310
+ *
311
+ * Note that if this is enabled, you must call `update()` in your animation loop.
312
+ * If you want the auto-rotate speed to be independent of the frame rate (the refresh
313
+ * rate of the display), you must pass the time `deltaTime`, in seconds, to `update()`.
314
+ *
315
+ * @type {boolean}
316
+ * @default false
317
+ */
92
318
  this.autoRotate = false;
93
- this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60
94
319
 
95
- // The four arrow keys
320
+ /**
321
+ * How fast to rotate around the target if `autoRotate` is `true`. The default equates to 30 seconds
322
+ * per orbit at 60fps.
323
+ *
324
+ * Note that if `autoRotate` is enabled, you must call `update()` in your animation loop.
325
+ *
326
+ * @type {number}
327
+ * @default 2
328
+ */
329
+ this.autoRotateSpeed = 2.0;
330
+
331
+ /**
332
+ * This object contains references to the keycodes for controlling camera panning.
333
+ *
334
+ * ```js
335
+ * controls.keys = {
336
+ * LEFT: 'ArrowLeft', //left arrow
337
+ * UP: 'ArrowUp', // up arrow
338
+ * RIGHT: 'ArrowRight', // right arrow
339
+ * BOTTOM: 'ArrowDown' // down arrow
340
+ * }
341
+ * ```
342
+ * @type {Object}
343
+ */
96
344
  this.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };
97
345
 
98
- // Mouse buttons
346
+ /**
347
+ * This object contains references to the mouse actions used by the controls.
348
+ *
349
+ * ```js
350
+ * controls.mouseButtons = {
351
+ * LEFT: THREE.MOUSE.ROTATE,
352
+ * MIDDLE: THREE.MOUSE.DOLLY,
353
+ * RIGHT: THREE.MOUSE.PAN
354
+ * }
355
+ * ```
356
+ * @type {Object}
357
+ */
99
358
  this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };
100
359
 
101
- // Touch fingers
360
+ /**
361
+ * This object contains references to the touch actions used by the controls.
362
+ *
363
+ * ```js
364
+ * controls.mouseButtons = {
365
+ * ONE: THREE.TOUCH.ROTATE,
366
+ * TWO: THREE.TOUCH.DOLLY_PAN
367
+ * }
368
+ * ```
369
+ * @type {Object}
370
+ */
102
371
  this.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };
103
372
 
104
- // for reset
373
+ /**
374
+ * Used internally by `saveState()` and `reset()`.
375
+ *
376
+ * @type {Vector3}
377
+ */
105
378
  this.target0 = this.target.clone();
379
+
380
+ /**
381
+ * Used internally by `saveState()` and `reset()`.
382
+ *
383
+ * @type {Vector3}
384
+ */
106
385
  this.position0 = this.object.position.clone();
386
+
387
+ /**
388
+ * Used internally by `saveState()` and `reset()`.
389
+ *
390
+ * @type {number}
391
+ */
107
392
  this.zoom0 = this.object.zoom;
108
393
 
109
394
  // the target DOM element for key events
110
395
  this._domElementKeyEvents = null;
111
396
 
112
- //
113
- // public methods
114
- //
397
+ // internals
115
398
 
116
- this.getPolarAngle = function () {
399
+ this._lastPosition = new Vector3();
400
+ this._lastQuaternion = new Quaternion();
401
+ this._lastTargetPosition = new Vector3();
117
402
 
118
- return spherical.phi;
403
+ // so camera.up is the orbit axis
404
+ this._quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );
405
+ this._quatInverse = this._quat.clone().invert();
119
406
 
120
- };
407
+ // current position in spherical coordinates
408
+ this._spherical = new Spherical();
409
+ this._sphericalDelta = new Spherical();
121
410
 
122
- this.getAzimuthalAngle = function () {
411
+ this._scale = 1;
412
+ this._panOffset = new Vector3();
123
413
 
124
- return spherical.theta;
414
+ this._rotateStart = new Vector2();
415
+ this._rotateEnd = new Vector2();
416
+ this._rotateDelta = new Vector2();
125
417
 
126
- };
418
+ this._panStart = new Vector2();
419
+ this._panEnd = new Vector2();
420
+ this._panDelta = new Vector2();
127
421
 
128
- this.getDistance = function () {
422
+ this._dollyStart = new Vector2();
423
+ this._dollyEnd = new Vector2();
424
+ this._dollyDelta = new Vector2();
129
425
 
130
- return this.object.position.distanceTo( this.target );
426
+ this._dollyDirection = new Vector3();
427
+ this._mouse = new Vector2();
428
+ this._performCursorZoom = false;
131
429
 
132
- };
430
+ this._pointers = [];
431
+ this._pointerPositions = {};
133
432
 
134
- this.listenToKeyEvents = function ( domElement ) {
433
+ this._controlActive = false;
135
434
 
136
- domElement.addEventListener( 'keydown', onKeyDown );
137
- this._domElementKeyEvents = domElement;
435
+ // event listeners
138
436
 
139
- };
437
+ this._onPointerMove = onPointerMove.bind( this );
438
+ this._onPointerDown = onPointerDown.bind( this );
439
+ this._onPointerUp = onPointerUp.bind( this );
440
+ this._onContextMenu = onContextMenu.bind( this );
441
+ this._onMouseWheel = onMouseWheel.bind( this );
442
+ this._onKeyDown = onKeyDown.bind( this );
140
443
 
141
- this.stopListenToKeyEvents = function () {
444
+ this._onTouchStart = onTouchStart.bind( this );
445
+ this._onTouchMove = onTouchMove.bind( this );
142
446
 
143
- this._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );
144
- this._domElementKeyEvents = null;
447
+ this._onMouseDown = onMouseDown.bind( this );
448
+ this._onMouseMove = onMouseMove.bind( this );
145
449
 
146
- };
450
+ this._interceptControlDown = interceptControlDown.bind( this );
451
+ this._interceptControlUp = interceptControlUp.bind( this );
147
452
 
148
- this.saveState = function () {
453
+ //
149
454
 
150
- scope.target0.copy( scope.target );
151
- scope.position0.copy( scope.object.position );
152
- scope.zoom0 = scope.object.zoom;
455
+ if ( this.domElement !== null ) {
153
456
 
154
- };
457
+ this.connect( this.domElement );
155
458
 
156
- this.reset = function () {
459
+ }
157
460
 
158
- scope.target.copy( scope.target0 );
159
- scope.object.position.copy( scope.position0 );
160
- scope.object.zoom = scope.zoom0;
461
+ this.update();
161
462
 
162
- scope.object.updateProjectionMatrix();
163
- scope.dispatchEvent( _changeEvent );
463
+ }
164
464
 
165
- scope.update();
465
+ connect( element ) {
166
466
 
167
- state = STATE.NONE;
467
+ super.connect( element );
168
468
 
169
- };
469
+ this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
470
+ this.domElement.addEventListener( 'pointercancel', this._onPointerUp );
170
471
 
171
- // this method is exposed, but perhaps it would be better if we can make it private...
172
- this.update = function () {
472
+ this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
473
+ this.domElement.addEventListener( 'wheel', this._onMouseWheel, { passive: false } );
173
474
 
174
- const offset = new Vector3();
475
+ const document = this.domElement.getRootNode(); // offscreen canvas compatibility
476
+ document.addEventListener( 'keydown', this._interceptControlDown, { passive: true, capture: true } );
175
477
 
176
- // so camera.up is the orbit axis
177
- const quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );
178
- const quatInverse = quat.clone().invert();
478
+ this.domElement.style.touchAction = 'none'; // disable touch scroll
179
479
 
180
- const lastPosition = new Vector3();
181
- const lastQuaternion = new Quaternion();
182
- const lastTargetPosition = new Vector3();
480
+ }
183
481
 
184
- const twoPI = 2 * Math.PI;
482
+ disconnect() {
185
483
 
186
- return function update( deltaTime = null ) {
484
+ this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
485
+ this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
486
+ this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
487
+ this.domElement.removeEventListener( 'pointercancel', this._onPointerUp );
187
488
 
188
- const position = scope.object.position;
489
+ this.domElement.removeEventListener( 'wheel', this._onMouseWheel );
490
+ this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
189
491
 
190
- offset.copy( position ).sub( scope.target );
492
+ this.stopListenToKeyEvents();
191
493
 
192
- // rotate offset to "y-axis-is-up" space
193
- offset.applyQuaternion( quat );
494
+ const document = this.domElement.getRootNode(); // offscreen canvas compatibility
495
+ document.removeEventListener( 'keydown', this._interceptControlDown, { capture: true } );
194
496
 
195
- // angle from z-axis around y-axis
196
- spherical.setFromVector3( offset );
497
+ this.domElement.style.touchAction = 'auto';
197
498
 
198
- if ( scope.autoRotate && state === STATE.NONE ) {
499
+ }
199
500
 
200
- rotateLeft( getAutoRotationAngle( deltaTime ) );
501
+ dispose() {
201
502
 
202
- }
503
+ this.disconnect();
203
504
 
204
- if ( scope.enableDamping ) {
505
+ }
205
506
 
206
- spherical.theta += sphericalDelta.theta * scope.dampingFactor;
207
- spherical.phi += sphericalDelta.phi * scope.dampingFactor;
507
+ /**
508
+ * Get the current vertical rotation, in radians.
509
+ *
510
+ * @return {number} The current vertical rotation, in radians.
511
+ */
512
+ getPolarAngle() {
208
513
 
209
- } else {
514
+ return this._spherical.phi;
210
515
 
211
- spherical.theta += sphericalDelta.theta;
212
- spherical.phi += sphericalDelta.phi;
516
+ }
213
517
 
214
- }
518
+ /**
519
+ * Get the current horizontal rotation, in radians.
520
+ *
521
+ * @return {number} The current horizontal rotation, in radians.
522
+ */
523
+ getAzimuthalAngle() {
215
524
 
216
- // restrict theta to be between desired limits
525
+ return this._spherical.theta;
217
526
 
218
- let min = scope.minAzimuthAngle;
219
- let max = scope.maxAzimuthAngle;
527
+ }
220
528
 
221
- if ( isFinite( min ) && isFinite( max ) ) {
529
+ /**
530
+ * Returns the distance from the camera to the target.
531
+ *
532
+ * @return {number} The distance from the camera to the target.
533
+ */
534
+ getDistance() {
222
535
 
223
- if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;
536
+ return this.object.position.distanceTo( this.target );
224
537
 
225
- if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;
538
+ }
226
539
 
227
- if ( min <= max ) {
540
+ /**
541
+ * Adds key event listeners to the given DOM element.
542
+ * `window` is a recommended argument for using this method.
543
+ *
544
+ * @param {HTMLElement} domElement - The DOM element
545
+ */
546
+ listenToKeyEvents( domElement ) {
228
547
 
229
- spherical.theta = Math.max( min, Math.min( max, spherical.theta ) );
548
+ domElement.addEventListener( 'keydown', this._onKeyDown );
549
+ this._domElementKeyEvents = domElement;
230
550
 
231
- } else {
551
+ }
232
552
 
233
- spherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?
234
- Math.max( min, spherical.theta ) :
235
- Math.min( max, spherical.theta );
553
+ /**
554
+ * Removes the key event listener previously defined with `listenToKeyEvents()`.
555
+ */
556
+ stopListenToKeyEvents() {
236
557
 
237
- }
558
+ if ( this._domElementKeyEvents !== null ) {
238
559
 
239
- }
560
+ this._domElementKeyEvents.removeEventListener( 'keydown', this._onKeyDown );
561
+ this._domElementKeyEvents = null;
240
562
 
241
- // restrict phi to be between desired limits
242
- spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );
563
+ }
243
564
 
244
- spherical.makeSafe();
565
+ }
245
566
 
567
+ /**
568
+ * Save the current state of the controls. This can later be recovered with `reset()`.
569
+ */
570
+ saveState() {
246
571
 
247
- // move target to panned location
572
+ this.target0.copy( this.target );
573
+ this.position0.copy( this.object.position );
574
+ this.zoom0 = this.object.zoom;
248
575
 
249
- if ( scope.enableDamping === true ) {
576
+ }
250
577
 
251
- scope.target.addScaledVector( panOffset, scope.dampingFactor );
578
+ /**
579
+ * Reset the controls to their state from either the last time the `saveState()`
580
+ * was called, or the initial state.
581
+ */
582
+ reset() {
252
583
 
253
- } else {
584
+ this.target.copy( this.target0 );
585
+ this.object.position.copy( this.position0 );
586
+ this.object.zoom = this.zoom0;
254
587
 
255
- scope.target.add( panOffset );
588
+ this.object.updateProjectionMatrix();
589
+ this.dispatchEvent( _changeEvent );
256
590
 
257
- }
591
+ this.update();
258
592
 
259
- // Limit the target distance from the cursor to create a sphere around the center of interest
260
- scope.target.sub( scope.cursor );
261
- scope.target.clampLength( scope.minTargetRadius, scope.maxTargetRadius );
262
- scope.target.add( scope.cursor );
593
+ this.state = _STATE.NONE;
263
594
 
264
- // adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera
265
- // we adjust zoom later in these cases
266
- if ( scope.zoomToCursor && performCursorZoom || scope.object.isOrthographicCamera ) {
595
+ }
267
596
 
268
- spherical.radius = clampDistance( spherical.radius );
597
+ update( deltaTime = null ) {
269
598
 
270
- } else {
599
+ const position = this.object.position;
271
600
 
272
- spherical.radius = clampDistance( spherical.radius * scale );
601
+ _v.copy( position ).sub( this.target );
273
602
 
274
- }
603
+ // rotate offset to "y-axis-is-up" space
604
+ _v.applyQuaternion( this._quat );
275
605
 
276
- offset.setFromSpherical( spherical );
606
+ // angle from z-axis around y-axis
607
+ this._spherical.setFromVector3( _v );
277
608
 
278
- // rotate offset back to "camera-up-vector-is-up" space
279
- offset.applyQuaternion( quatInverse );
609
+ if ( this.autoRotate && this.state === _STATE.NONE ) {
280
610
 
281
- position.copy( scope.target ).add( offset );
611
+ this._rotateLeft( this._getAutoRotationAngle( deltaTime ) );
282
612
 
283
- scope.object.lookAt( scope.target );
613
+ }
284
614
 
285
- if ( scope.enableDamping === true ) {
615
+ if ( this.enableDamping ) {
286
616
 
287
- sphericalDelta.theta *= ( 1 - scope.dampingFactor );
288
- sphericalDelta.phi *= ( 1 - scope.dampingFactor );
617
+ this._spherical.theta += this._sphericalDelta.theta * this.dampingFactor;
618
+ this._spherical.phi += this._sphericalDelta.phi * this.dampingFactor;
289
619
 
290
- panOffset.multiplyScalar( 1 - scope.dampingFactor );
620
+ } else {
291
621
 
292
- } else {
622
+ this._spherical.theta += this._sphericalDelta.theta;
623
+ this._spherical.phi += this._sphericalDelta.phi;
293
624
 
294
- sphericalDelta.set( 0, 0, 0 );
625
+ }
295
626
 
296
- panOffset.set( 0, 0, 0 );
627
+ // restrict theta to be between desired limits
297
628
 
298
- }
629
+ let min = this.minAzimuthAngle;
630
+ let max = this.maxAzimuthAngle;
299
631
 
300
- // adjust camera position
301
- let zoomChanged = false;
302
- if ( scope.zoomToCursor && performCursorZoom ) {
632
+ if ( isFinite( min ) && isFinite( max ) ) {
303
633
 
304
- let newRadius = null;
305
- if ( scope.object.isPerspectiveCamera ) {
634
+ if ( min < - Math.PI ) min += _twoPI; else if ( min > Math.PI ) min -= _twoPI;
306
635
 
307
- // move the camera down the pointer ray
308
- // this method avoids floating point error
309
- const prevRadius = offset.length();
310
- newRadius = clampDistance( prevRadius * scale );
636
+ if ( max < - Math.PI ) max += _twoPI; else if ( max > Math.PI ) max -= _twoPI;
311
637
 
312
- const radiusDelta = prevRadius - newRadius;
313
- scope.object.position.addScaledVector( dollyDirection, radiusDelta );
314
- scope.object.updateMatrixWorld();
638
+ if ( min <= max ) {
315
639
 
316
- } else if ( scope.object.isOrthographicCamera ) {
640
+ this._spherical.theta = Math.max( min, Math.min( max, this._spherical.theta ) );
317
641
 
318
- // adjust the ortho camera position based on zoom changes
319
- const mouseBefore = new Vector3( mouse.x, mouse.y, 0 );
320
- mouseBefore.unproject( scope.object );
642
+ } else {
321
643
 
322
- scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) );
323
- scope.object.updateProjectionMatrix();
324
- zoomChanged = true;
644
+ this._spherical.theta = ( this._spherical.theta > ( min + max ) / 2 ) ?
645
+ Math.max( min, this._spherical.theta ) :
646
+ Math.min( max, this._spherical.theta );
325
647
 
326
- const mouseAfter = new Vector3( mouse.x, mouse.y, 0 );
327
- mouseAfter.unproject( scope.object );
648
+ }
328
649
 
329
- scope.object.position.sub( mouseAfter ).add( mouseBefore );
330
- scope.object.updateMatrixWorld();
650
+ }
331
651
 
332
- newRadius = offset.length();
652
+ // restrict phi to be between desired limits
653
+ this._spherical.phi = Math.max( this.minPolarAngle, Math.min( this.maxPolarAngle, this._spherical.phi ) );
333
654
 
334
- } else {
655
+ this._spherical.makeSafe();
335
656
 
336
- console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.' );
337
- scope.zoomToCursor = false;
338
657
 
339
- }
658
+ // move target to panned location
340
659
 
341
- // handle the placement of the target
342
- if ( newRadius !== null ) {
660
+ if ( this.enableDamping === true ) {
343
661
 
344
- if ( this.screenSpacePanning ) {
662
+ this.target.addScaledVector( this._panOffset, this.dampingFactor );
345
663
 
346
- // position the orbit target in front of the new camera position
347
- scope.target.set( 0, 0, - 1 )
348
- .transformDirection( scope.object.matrix )
349
- .multiplyScalar( newRadius )
350
- .add( scope.object.position );
664
+ } else {
351
665
 
352
- } else {
666
+ this.target.add( this._panOffset );
353
667
 
354
- // get the ray and translation plane to compute target
355
- _ray.origin.copy( scope.object.position );
356
- _ray.direction.set( 0, 0, - 1 ).transformDirection( scope.object.matrix );
668
+ }
357
669
 
358
- // if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid
359
- // extremely large values
360
- if ( Math.abs( scope.object.up.dot( _ray.direction ) ) < TILT_LIMIT ) {
670
+ // Limit the target distance from the cursor to create a sphere around the center of interest
671
+ this.target.sub( this.cursor );
672
+ this.target.clampLength( this.minTargetRadius, this.maxTargetRadius );
673
+ this.target.add( this.cursor );
361
674
 
362
- object.lookAt( scope.target );
675
+ let zoomChanged = false;
676
+ // adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera
677
+ // we adjust zoom later in these cases
678
+ if ( this.zoomToCursor && this._performCursorZoom || this.object.isOrthographicCamera ) {
363
679
 
364
- } else {
680
+ this._spherical.radius = this._clampDistance( this._spherical.radius );
365
681
 
366
- _plane.setFromNormalAndCoplanarPoint( scope.object.up, scope.target );
367
- _ray.intersectPlane( _plane, scope.target );
682
+ } else {
368
683
 
369
- }
684
+ const prevRadius = this._spherical.radius;
685
+ this._spherical.radius = this._clampDistance( this._spherical.radius * this._scale );
686
+ zoomChanged = prevRadius != this._spherical.radius;
370
687
 
371
- }
688
+ }
372
689
 
373
- }
690
+ _v.setFromSpherical( this._spherical );
374
691
 
375
- } else if ( scope.object.isOrthographicCamera ) {
692
+ // rotate offset back to "camera-up-vector-is-up" space
693
+ _v.applyQuaternion( this._quatInverse );
376
694
 
377
- zoomChanged = scale !== 1;
695
+ position.copy( this.target ).add( _v );
378
696
 
379
- if ( zoomChanged ) {
697
+ this.object.lookAt( this.target );
380
698
 
381
- scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) );
382
- scope.object.updateProjectionMatrix();
699
+ if ( this.enableDamping === true ) {
383
700
 
384
- }
701
+ this._sphericalDelta.theta *= ( 1 - this.dampingFactor );
702
+ this._sphericalDelta.phi *= ( 1 - this.dampingFactor );
385
703
 
386
- }
704
+ this._panOffset.multiplyScalar( 1 - this.dampingFactor );
387
705
 
388
- scale = 1;
389
- performCursorZoom = false;
706
+ } else {
390
707
 
391
- // update condition is:
392
- // min(camera displacement, camera rotation in radians)^2 > EPS
393
- // using small-angle approximation cos(x/2) = 1 - x^2 / 8
708
+ this._sphericalDelta.set( 0, 0, 0 );
394
709
 
395
- if ( zoomChanged ||
396
- lastPosition.distanceToSquared( scope.object.position ) > EPS ||
397
- 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ||
398
- lastTargetPosition.distanceToSquared( scope.target ) > 0 ) {
710
+ this._panOffset.set( 0, 0, 0 );
399
711
 
400
- scope.dispatchEvent( _changeEvent );
712
+ }
401
713
 
402
- lastPosition.copy( scope.object.position );
403
- lastQuaternion.copy( scope.object.quaternion );
404
- lastTargetPosition.copy( scope.target );
714
+ // adjust camera position
715
+ if ( this.zoomToCursor && this._performCursorZoom ) {
405
716
 
406
- return true;
717
+ let newRadius = null;
718
+ if ( this.object.isPerspectiveCamera ) {
407
719
 
408
- }
720
+ // move the camera down the pointer ray
721
+ // this method avoids floating point error
722
+ const prevRadius = _v.length();
723
+ newRadius = this._clampDistance( prevRadius * this._scale );
409
724
 
410
- return false;
725
+ const radiusDelta = prevRadius - newRadius;
726
+ this.object.position.addScaledVector( this._dollyDirection, radiusDelta );
727
+ this.object.updateMatrixWorld();
411
728
 
412
- };
729
+ zoomChanged = !! radiusDelta;
413
730
 
414
- }();
731
+ } else if ( this.object.isOrthographicCamera ) {
415
732
 
416
- this.dispose = function () {
733
+ // adjust the ortho camera position based on zoom changes
734
+ const mouseBefore = new Vector3( this._mouse.x, this._mouse.y, 0 );
735
+ mouseBefore.unproject( this.object );
417
736
 
418
- scope.domElement.removeEventListener( 'contextmenu', onContextMenu );
737
+ const prevZoom = this.object.zoom;
738
+ this.object.zoom = Math.max( this.minZoom, Math.min( this.maxZoom, this.object.zoom / this._scale ) );
739
+ this.object.updateProjectionMatrix();
419
740
 
420
- scope.domElement.removeEventListener( 'pointerdown', onPointerDown );
421
- scope.domElement.removeEventListener( 'pointercancel', onPointerUp );
422
- scope.domElement.removeEventListener( 'wheel', onMouseWheel );
741
+ zoomChanged = prevZoom !== this.object.zoom;
423
742
 
424
- scope.domElement.removeEventListener( 'pointermove', onPointerMove );
425
- scope.domElement.removeEventListener( 'pointerup', onPointerUp );
743
+ const mouseAfter = new Vector3( this._mouse.x, this._mouse.y, 0 );
744
+ mouseAfter.unproject( this.object );
426
745
 
746
+ this.object.position.sub( mouseAfter ).add( mouseBefore );
747
+ this.object.updateMatrixWorld();
427
748
 
428
- if ( scope._domElementKeyEvents !== null ) {
749
+ newRadius = _v.length();
429
750
 
430
- scope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );
431
- scope._domElementKeyEvents = null;
751
+ } else {
752
+
753
+ console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.' );
754
+ this.zoomToCursor = false;
432
755
 
433
756
  }
434
757
 
435
- //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
758
+ // handle the placement of the target
759
+ if ( newRadius !== null ) {
436
760
 
437
- };
761
+ if ( this.screenSpacePanning ) {
438
762
 
439
- //
440
- // internals
441
- //
763
+ // position the orbit target in front of the new camera position
764
+ this.target.set( 0, 0, - 1 )
765
+ .transformDirection( this.object.matrix )
766
+ .multiplyScalar( newRadius )
767
+ .add( this.object.position );
442
768
 
443
- const scope = this;
444
-
445
- const STATE = {
446
- NONE: - 1,
447
- ROTATE: 0,
448
- DOLLY: 1,
449
- PAN: 2,
450
- TOUCH_ROTATE: 3,
451
- TOUCH_PAN: 4,
452
- TOUCH_DOLLY_PAN: 5,
453
- TOUCH_DOLLY_ROTATE: 6
454
- };
769
+ } else {
455
770
 
456
- let state = STATE.NONE;
771
+ // get the ray and translation plane to compute target
772
+ _ray.origin.copy( this.object.position );
773
+ _ray.direction.set( 0, 0, - 1 ).transformDirection( this.object.matrix );
457
774
 
458
- const EPS = 0.000001;
775
+ // if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid
776
+ // extremely large values
777
+ if ( Math.abs( this.object.up.dot( _ray.direction ) ) < _TILT_LIMIT ) {
459
778
 
460
- // current position in spherical coordinates
461
- const spherical = new Spherical();
462
- const sphericalDelta = new Spherical();
779
+ this.object.lookAt( this.target );
463
780
 
464
- let scale = 1;
465
- const panOffset = new Vector3();
781
+ } else {
466
782
 
467
- const rotateStart = new Vector2();
468
- const rotateEnd = new Vector2();
469
- const rotateDelta = new Vector2();
783
+ _plane.setFromNormalAndCoplanarPoint( this.object.up, this.target );
784
+ _ray.intersectPlane( _plane, this.target );
470
785
 
471
- const panStart = new Vector2();
472
- const panEnd = new Vector2();
473
- const panDelta = new Vector2();
786
+ }
474
787
 
475
- const dollyStart = new Vector2();
476
- const dollyEnd = new Vector2();
477
- const dollyDelta = new Vector2();
788
+ }
478
789
 
479
- const dollyDirection = new Vector3();
480
- const mouse = new Vector2();
481
- let performCursorZoom = false;
790
+ }
482
791
 
483
- const pointers = [];
484
- const pointerPositions = {};
792
+ } else if ( this.object.isOrthographicCamera ) {
485
793
 
486
- let controlActive = false;
794
+ const prevZoom = this.object.zoom;
795
+ this.object.zoom = Math.max( this.minZoom, Math.min( this.maxZoom, this.object.zoom / this._scale ) );
487
796
 
488
- function getAutoRotationAngle( deltaTime ) {
797
+ if ( prevZoom !== this.object.zoom ) {
489
798
 
490
- if ( deltaTime !== null ) {
799
+ this.object.updateProjectionMatrix();
800
+ zoomChanged = true;
491
801
 
492
- return ( 2 * Math.PI / 60 * scope.autoRotateSpeed ) * deltaTime;
802
+ }
493
803
 
494
- } else {
804
+ }
495
805
 
496
- return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
806
+ this._scale = 1;
807
+ this._performCursorZoom = false;
497
808
 
498
- }
809
+ // update condition is:
810
+ // min(camera displacement, camera rotation in radians)^2 > EPS
811
+ // using small-angle approximation cos(x/2) = 1 - x^2 / 8
499
812
 
500
- }
813
+ if ( zoomChanged ||
814
+ this._lastPosition.distanceToSquared( this.object.position ) > _EPS ||
815
+ 8 * ( 1 - this._lastQuaternion.dot( this.object.quaternion ) ) > _EPS ||
816
+ this._lastTargetPosition.distanceToSquared( this.target ) > _EPS ) {
817
+
818
+ this.dispatchEvent( _changeEvent );
501
819
 
502
- function getZoomScale( delta ) {
820
+ this._lastPosition.copy( this.object.position );
821
+ this._lastQuaternion.copy( this.object.quaternion );
822
+ this._lastTargetPosition.copy( this.target );
503
823
 
504
- const normalizedDelta = Math.abs( delta * 0.01 );
505
- return Math.pow( 0.95, scope.zoomSpeed * normalizedDelta );
824
+ return true;
506
825
 
507
826
  }
508
827
 
509
- function rotateLeft( angle ) {
828
+ return false;
510
829
 
511
- sphericalDelta.theta -= angle;
830
+ }
512
831
 
513
- }
832
+ _getAutoRotationAngle( deltaTime ) {
833
+
834
+ if ( deltaTime !== null ) {
514
835
 
515
- function rotateUp( angle ) {
836
+ return ( _twoPI / 60 * this.autoRotateSpeed ) * deltaTime;
516
837
 
517
- sphericalDelta.phi -= angle;
838
+ } else {
839
+
840
+ return _twoPI / 60 / 60 * this.autoRotateSpeed;
518
841
 
519
842
  }
520
843
 
521
- const panLeft = function () {
844
+ }
522
845
 
523
- const v = new Vector3();
846
+ _getZoomScale( delta ) {
524
847
 
525
- return function panLeft( distance, objectMatrix ) {
848
+ const normalizedDelta = Math.abs( delta * 0.01 );
849
+ return Math.pow( 0.95, this.zoomSpeed * normalizedDelta );
526
850
 
527
- v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix
528
- v.multiplyScalar( - distance );
851
+ }
529
852
 
530
- panOffset.add( v );
853
+ _rotateLeft( angle ) {
531
854
 
532
- };
855
+ this._sphericalDelta.theta -= angle;
533
856
 
534
- }();
857
+ }
535
858
 
536
- const panUp = function () {
859
+ _rotateUp( angle ) {
537
860
 
538
- const v = new Vector3();
861
+ this._sphericalDelta.phi -= angle;
539
862
 
540
- return function panUp( distance, objectMatrix ) {
863
+ }
541
864
 
542
- if ( scope.screenSpacePanning === true ) {
865
+ _panLeft( distance, objectMatrix ) {
543
866
 
544
- v.setFromMatrixColumn( objectMatrix, 1 );
867
+ _v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix
868
+ _v.multiplyScalar( - distance );
545
869
 
546
- } else {
870
+ this._panOffset.add( _v );
547
871
 
548
- v.setFromMatrixColumn( objectMatrix, 0 );
549
- v.crossVectors( scope.object.up, v );
872
+ }
550
873
 
551
- }
874
+ _panUp( distance, objectMatrix ) {
552
875
 
553
- v.multiplyScalar( distance );
876
+ if ( this.screenSpacePanning === true ) {
554
877
 
555
- panOffset.add( v );
878
+ _v.setFromMatrixColumn( objectMatrix, 1 );
556
879
 
557
- };
880
+ } else {
558
881
 
559
- }();
882
+ _v.setFromMatrixColumn( objectMatrix, 0 );
883
+ _v.crossVectors( this.object.up, _v );
560
884
 
561
- // deltaX and deltaY are in pixels; right and down are positive
562
- const pan = function () {
885
+ }
563
886
 
564
- const offset = new Vector3();
887
+ _v.multiplyScalar( distance );
565
888
 
566
- return function pan( deltaX, deltaY ) {
889
+ this._panOffset.add( _v );
567
890
 
568
- const element = scope.domElement;
891
+ }
569
892
 
570
- if ( scope.object.isPerspectiveCamera ) {
893
+ // deltaX and deltaY are in pixels; right and down are positive
894
+ _pan( deltaX, deltaY ) {
571
895
 
572
- // perspective
573
- const position = scope.object.position;
574
- offset.copy( position ).sub( scope.target );
575
- let targetDistance = offset.length();
896
+ const element = this.domElement;
576
897
 
577
- // half of the fov is center to top of screen
578
- targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );
898
+ if ( this.object.isPerspectiveCamera ) {
579
899
 
580
- // we use only clientHeight here so aspect ratio does not distort speed
581
- panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );
582
- panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );
900
+ // perspective
901
+ const position = this.object.position;
902
+ _v.copy( position ).sub( this.target );
903
+ let targetDistance = _v.length();
583
904
 
584
- } else if ( scope.object.isOrthographicCamera ) {
905
+ // half of the fov is center to top of screen
906
+ targetDistance *= Math.tan( ( this.object.fov / 2 ) * Math.PI / 180.0 );
585
907
 
586
- // orthographic
587
- panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );
588
- panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );
908
+ // we use only clientHeight here so aspect ratio does not distort speed
909
+ this._panLeft( 2 * deltaX * targetDistance / element.clientHeight, this.object.matrix );
910
+ this._panUp( 2 * deltaY * targetDistance / element.clientHeight, this.object.matrix );
589
911
 
590
- } else {
912
+ } else if ( this.object.isOrthographicCamera ) {
591
913
 
592
- // camera neither orthographic nor perspective
593
- console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );
594
- scope.enablePan = false;
914
+ // orthographic
915
+ this._panLeft( deltaX * ( this.object.right - this.object.left ) / this.object.zoom / element.clientWidth, this.object.matrix );
916
+ this._panUp( deltaY * ( this.object.top - this.object.bottom ) / this.object.zoom / element.clientHeight, this.object.matrix );
595
917
 
596
- }
918
+ } else {
597
919
 
598
- };
920
+ // camera neither orthographic nor perspective
921
+ console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );
922
+ this.enablePan = false;
599
923
 
600
- }();
924
+ }
601
925
 
602
- function dollyOut( dollyScale ) {
926
+ }
603
927
 
604
- if ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) {
928
+ _dollyOut( dollyScale ) {
605
929
 
606
- scale /= dollyScale;
930
+ if ( this.object.isPerspectiveCamera || this.object.isOrthographicCamera ) {
607
931
 
608
- } else {
932
+ this._scale /= dollyScale;
609
933
 
610
- console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );
611
- scope.enableZoom = false;
934
+ } else {
612
935
 
613
- }
936
+ console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );
937
+ this.enableZoom = false;
614
938
 
615
939
  }
616
940
 
617
- function dollyIn( dollyScale ) {
941
+ }
618
942
 
619
- if ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) {
943
+ _dollyIn( dollyScale ) {
620
944
 
621
- scale *= dollyScale;
945
+ if ( this.object.isPerspectiveCamera || this.object.isOrthographicCamera ) {
622
946
 
623
- } else {
947
+ this._scale *= dollyScale;
624
948
 
625
- console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );
626
- scope.enableZoom = false;
949
+ } else {
627
950
 
628
- }
951
+ console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );
952
+ this.enableZoom = false;
629
953
 
630
954
  }
631
955
 
632
- function updateZoomParameters( x, y ) {
633
-
634
- if ( ! scope.zoomToCursor ) {
635
-
636
- return;
956
+ }
637
957
 
638
- }
958
+ _updateZoomParameters( x, y ) {
639
959
 
640
- performCursorZoom = true;
960
+ if ( ! this.zoomToCursor ) {
641
961
 
642
- const rect = scope.domElement.getBoundingClientRect();
643
- const dx = x - rect.left;
644
- const dy = y - rect.top;
645
- const w = rect.width;
646
- const h = rect.height;
962
+ return;
647
963
 
648
- mouse.x = ( dx / w ) * 2 - 1;
649
- mouse.y = - ( dy / h ) * 2 + 1;
964
+ }
650
965
 
651
- dollyDirection.set( mouse.x, mouse.y, 1 ).unproject( scope.object ).sub( scope.object.position ).normalize();
966
+ this._performCursorZoom = true;
652
967
 
653
- }
968
+ const rect = this.domElement.getBoundingClientRect();
969
+ const dx = x - rect.left;
970
+ const dy = y - rect.top;
971
+ const w = rect.width;
972
+ const h = rect.height;
654
973
 
655
- function clampDistance( dist ) {
974
+ this._mouse.x = ( dx / w ) * 2 - 1;
975
+ this._mouse.y = - ( dy / h ) * 2 + 1;
656
976
 
657
- return Math.max( scope.minDistance, Math.min( scope.maxDistance, dist ) );
977
+ this._dollyDirection.set( this._mouse.x, this._mouse.y, 1 ).unproject( this.object ).sub( this.object.position ).normalize();
658
978
 
659
- }
979
+ }
660
980
 
661
- //
662
- // event callbacks - update the object state
663
- //
981
+ _clampDistance( dist ) {
664
982
 
665
- function handleMouseDownRotate( event ) {
983
+ return Math.max( this.minDistance, Math.min( this.maxDistance, dist ) );
666
984
 
667
- rotateStart.set( event.clientX, event.clientY );
985
+ }
668
986
 
669
- }
987
+ //
988
+ // event callbacks - update the object state
989
+ //
670
990
 
671
- function handleMouseDownDolly( event ) {
991
+ _handleMouseDownRotate( event ) {
672
992
 
673
- updateZoomParameters( event.clientX, event.clientX );
674
- dollyStart.set( event.clientX, event.clientY );
993
+ this._rotateStart.set( event.clientX, event.clientY );
675
994
 
676
- }
995
+ }
677
996
 
678
- function handleMouseDownPan( event ) {
997
+ _handleMouseDownDolly( event ) {
679
998
 
680
- panStart.set( event.clientX, event.clientY );
999
+ this._updateZoomParameters( event.clientX, event.clientX );
1000
+ this._dollyStart.set( event.clientX, event.clientY );
681
1001
 
682
- }
1002
+ }
683
1003
 
684
- function handleMouseMoveRotate( event ) {
1004
+ _handleMouseDownPan( event ) {
685
1005
 
686
- rotateEnd.set( event.clientX, event.clientY );
1006
+ this._panStart.set( event.clientX, event.clientY );
687
1007
 
688
- rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );
1008
+ }
689
1009
 
690
- const element = scope.domElement;
1010
+ _handleMouseMoveRotate( event ) {
691
1011
 
692
- rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height
1012
+ this._rotateEnd.set( event.clientX, event.clientY );
693
1013
 
694
- rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );
1014
+ this._rotateDelta.subVectors( this._rotateEnd, this._rotateStart ).multiplyScalar( this.rotateSpeed );
695
1015
 
696
- rotateStart.copy( rotateEnd );
1016
+ const element = this.domElement;
697
1017
 
698
- scope.update();
1018
+ this._rotateLeft( _twoPI * this._rotateDelta.x / element.clientHeight ); // yes, height
699
1019
 
700
- }
1020
+ this._rotateUp( _twoPI * this._rotateDelta.y / element.clientHeight );
701
1021
 
702
- function handleMouseMoveDolly( event ) {
1022
+ this._rotateStart.copy( this._rotateEnd );
703
1023
 
704
- dollyEnd.set( event.clientX, event.clientY );
1024
+ this.update();
705
1025
 
706
- dollyDelta.subVectors( dollyEnd, dollyStart );
1026
+ }
707
1027
 
708
- if ( dollyDelta.y > 0 ) {
1028
+ _handleMouseMoveDolly( event ) {
709
1029
 
710
- dollyOut( getZoomScale( dollyDelta.y ) );
1030
+ this._dollyEnd.set( event.clientX, event.clientY );
711
1031
 
712
- } else if ( dollyDelta.y < 0 ) {
1032
+ this._dollyDelta.subVectors( this._dollyEnd, this._dollyStart );
713
1033
 
714
- dollyIn( getZoomScale( dollyDelta.y ) );
1034
+ if ( this._dollyDelta.y > 0 ) {
715
1035
 
716
- }
1036
+ this._dollyOut( this._getZoomScale( this._dollyDelta.y ) );
717
1037
 
718
- dollyStart.copy( dollyEnd );
1038
+ } else if ( this._dollyDelta.y < 0 ) {
719
1039
 
720
- scope.update();
1040
+ this._dollyIn( this._getZoomScale( this._dollyDelta.y ) );
721
1041
 
722
1042
  }
723
1043
 
724
- function handleMouseMovePan( event ) {
1044
+ this._dollyStart.copy( this._dollyEnd );
725
1045
 
726
- panEnd.set( event.clientX, event.clientY );
1046
+ this.update();
727
1047
 
728
- panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );
1048
+ }
729
1049
 
730
- pan( panDelta.x, panDelta.y );
1050
+ _handleMouseMovePan( event ) {
731
1051
 
732
- panStart.copy( panEnd );
1052
+ this._panEnd.set( event.clientX, event.clientY );
733
1053
 
734
- scope.update();
1054
+ this._panDelta.subVectors( this._panEnd, this._panStart ).multiplyScalar( this.panSpeed );
735
1055
 
736
- }
1056
+ this._pan( this._panDelta.x, this._panDelta.y );
737
1057
 
738
- function handleMouseWheel( event ) {
1058
+ this._panStart.copy( this._panEnd );
739
1059
 
740
- updateZoomParameters( event.clientX, event.clientY );
1060
+ this.update();
741
1061
 
742
- if ( event.deltaY < 0 ) {
1062
+ }
743
1063
 
744
- dollyIn( getZoomScale( event.deltaY ) );
1064
+ _handleMouseWheel( event ) {
745
1065
 
746
- } else if ( event.deltaY > 0 ) {
1066
+ this._updateZoomParameters( event.clientX, event.clientY );
747
1067
 
748
- dollyOut( getZoomScale( event.deltaY ) );
1068
+ if ( event.deltaY < 0 ) {
749
1069
 
750
- }
1070
+ this._dollyIn( this._getZoomScale( event.deltaY ) );
1071
+
1072
+ } else if ( event.deltaY > 0 ) {
751
1073
 
752
- scope.update();
1074
+ this._dollyOut( this._getZoomScale( event.deltaY ) );
753
1075
 
754
1076
  }
755
1077
 
756
- function handleKeyDown( event ) {
1078
+ this.update();
757
1079
 
758
- let needsUpdate = false;
1080
+ }
759
1081
 
760
- switch ( event.code ) {
1082
+ _handleKeyDown( event ) {
761
1083
 
762
- case scope.keys.UP:
1084
+ let needsUpdate = false;
763
1085
 
764
- if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
1086
+ switch ( event.code ) {
765
1087
 
766
- rotateUp( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
1088
+ case this.keys.UP:
767
1089
 
768
- } else {
1090
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
769
1091
 
770
- pan( 0, scope.keyPanSpeed );
1092
+ if ( this.enableRotate ) {
1093
+
1094
+ this._rotateUp( _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
771
1095
 
772
1096
  }
773
1097
 
774
- needsUpdate = true;
775
- break;
1098
+ } else {
776
1099
 
777
- case scope.keys.BOTTOM:
1100
+ if ( this.enablePan ) {
778
1101
 
779
- if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
1102
+ this._pan( 0, this.keyPanSpeed );
780
1103
 
781
- rotateUp( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
1104
+ }
782
1105
 
783
- } else {
1106
+ }
784
1107
 
785
- pan( 0, - scope.keyPanSpeed );
1108
+ needsUpdate = true;
1109
+ break;
786
1110
 
787
- }
1111
+ case this.keys.BOTTOM:
788
1112
 
789
- needsUpdate = true;
790
- break;
1113
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
791
1114
 
792
- case scope.keys.LEFT:
1115
+ if ( this.enableRotate ) {
793
1116
 
794
- if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
1117
+ this._rotateUp( - _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
795
1118
 
796
- rotateLeft( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
1119
+ }
797
1120
 
798
- } else {
1121
+ } else {
1122
+
1123
+ if ( this.enablePan ) {
799
1124
 
800
- pan( scope.keyPanSpeed, 0 );
1125
+ this._pan( 0, - this.keyPanSpeed );
801
1126
 
802
1127
  }
803
1128
 
804
- needsUpdate = true;
805
- break;
1129
+ }
806
1130
 
807
- case scope.keys.RIGHT:
1131
+ needsUpdate = true;
1132
+ break;
808
1133
 
809
- if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
1134
+ case this.keys.LEFT:
810
1135
 
811
- rotateLeft( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
1136
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
812
1137
 
813
- } else {
1138
+ if ( this.enableRotate ) {
814
1139
 
815
- pan( - scope.keyPanSpeed, 0 );
1140
+ this._rotateLeft( _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
816
1141
 
817
1142
  }
818
1143
 
819
- needsUpdate = true;
820
- break;
1144
+ } else {
821
1145
 
822
- }
1146
+ if ( this.enablePan ) {
823
1147
 
824
- if ( needsUpdate ) {
1148
+ this._pan( this.keyPanSpeed, 0 );
825
1149
 
826
- // prevent the browser from scrolling on cursor keys
827
- event.preventDefault();
1150
+ }
828
1151
 
829
- scope.update();
1152
+ }
830
1153
 
831
- }
1154
+ needsUpdate = true;
1155
+ break;
832
1156
 
1157
+ case this.keys.RIGHT:
833
1158
 
834
- }
1159
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
835
1160
 
836
- function handleTouchStartRotate( event ) {
1161
+ if ( this.enableRotate ) {
837
1162
 
838
- if ( pointers.length === 1 ) {
1163
+ this._rotateLeft( - _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
839
1164
 
840
- rotateStart.set( event.pageX, event.pageY );
1165
+ }
841
1166
 
842
- } else {
1167
+ } else {
843
1168
 
844
- const position = getSecondPointerPosition( event );
1169
+ if ( this.enablePan ) {
845
1170
 
846
- const x = 0.5 * ( event.pageX + position.x );
847
- const y = 0.5 * ( event.pageY + position.y );
1171
+ this._pan( - this.keyPanSpeed, 0 );
848
1172
 
849
- rotateStart.set( x, y );
1173
+ }
850
1174
 
851
- }
1175
+ }
1176
+
1177
+ needsUpdate = true;
1178
+ break;
852
1179
 
853
1180
  }
854
1181
 
855
- function handleTouchStartPan( event ) {
1182
+ if ( needsUpdate ) {
856
1183
 
857
- if ( pointers.length === 1 ) {
1184
+ // prevent the browser from scrolling on cursor keys
1185
+ event.preventDefault();
858
1186
 
859
- panStart.set( event.pageX, event.pageY );
1187
+ this.update();
860
1188
 
861
- } else {
862
-
863
- const position = getSecondPointerPosition( event );
1189
+ }
864
1190
 
865
- const x = 0.5 * ( event.pageX + position.x );
866
- const y = 0.5 * ( event.pageY + position.y );
867
1191
 
868
- panStart.set( x, y );
1192
+ }
869
1193
 
870
- }
1194
+ _handleTouchStartRotate( event ) {
871
1195
 
872
- }
1196
+ if ( this._pointers.length === 1 ) {
873
1197
 
874
- function handleTouchStartDolly( event ) {
1198
+ this._rotateStart.set( event.pageX, event.pageY );
875
1199
 
876
- const position = getSecondPointerPosition( event );
1200
+ } else {
877
1201
 
878
- const dx = event.pageX - position.x;
879
- const dy = event.pageY - position.y;
1202
+ const position = this._getSecondPointerPosition( event );
880
1203
 
881
- const distance = Math.sqrt( dx * dx + dy * dy );
1204
+ const x = 0.5 * ( event.pageX + position.x );
1205
+ const y = 0.5 * ( event.pageY + position.y );
882
1206
 
883
- dollyStart.set( 0, distance );
1207
+ this._rotateStart.set( x, y );
884
1208
 
885
1209
  }
886
1210
 
887
- function handleTouchStartDollyPan( event ) {
1211
+ }
888
1212
 
889
- if ( scope.enableZoom ) handleTouchStartDolly( event );
1213
+ _handleTouchStartPan( event ) {
890
1214
 
891
- if ( scope.enablePan ) handleTouchStartPan( event );
1215
+ if ( this._pointers.length === 1 ) {
892
1216
 
893
- }
1217
+ this._panStart.set( event.pageX, event.pageY );
1218
+
1219
+ } else {
894
1220
 
895
- function handleTouchStartDollyRotate( event ) {
1221
+ const position = this._getSecondPointerPosition( event );
896
1222
 
897
- if ( scope.enableZoom ) handleTouchStartDolly( event );
1223
+ const x = 0.5 * ( event.pageX + position.x );
1224
+ const y = 0.5 * ( event.pageY + position.y );
898
1225
 
899
- if ( scope.enableRotate ) handleTouchStartRotate( event );
1226
+ this._panStart.set( x, y );
900
1227
 
901
1228
  }
902
1229
 
903
- function handleTouchMoveRotate( event ) {
1230
+ }
904
1231
 
905
- if ( pointers.length == 1 ) {
1232
+ _handleTouchStartDolly( event ) {
906
1233
 
907
- rotateEnd.set( event.pageX, event.pageY );
1234
+ const position = this._getSecondPointerPosition( event );
908
1235
 
909
- } else {
1236
+ const dx = event.pageX - position.x;
1237
+ const dy = event.pageY - position.y;
910
1238
 
911
- const position = getSecondPointerPosition( event );
1239
+ const distance = Math.sqrt( dx * dx + dy * dy );
912
1240
 
913
- const x = 0.5 * ( event.pageX + position.x );
914
- const y = 0.5 * ( event.pageY + position.y );
1241
+ this._dollyStart.set( 0, distance );
915
1242
 
916
- rotateEnd.set( x, y );
1243
+ }
917
1244
 
918
- }
1245
+ _handleTouchStartDollyPan( event ) {
919
1246
 
920
- rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );
1247
+ if ( this.enableZoom ) this._handleTouchStartDolly( event );
921
1248
 
922
- const element = scope.domElement;
1249
+ if ( this.enablePan ) this._handleTouchStartPan( event );
923
1250
 
924
- rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height
1251
+ }
925
1252
 
926
- rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );
1253
+ _handleTouchStartDollyRotate( event ) {
927
1254
 
928
- rotateStart.copy( rotateEnd );
1255
+ if ( this.enableZoom ) this._handleTouchStartDolly( event );
929
1256
 
930
- }
1257
+ if ( this.enableRotate ) this._handleTouchStartRotate( event );
931
1258
 
932
- function handleTouchMovePan( event ) {
1259
+ }
933
1260
 
934
- if ( pointers.length === 1 ) {
1261
+ _handleTouchMoveRotate( event ) {
935
1262
 
936
- panEnd.set( event.pageX, event.pageY );
1263
+ if ( this._pointers.length == 1 ) {
937
1264
 
938
- } else {
1265
+ this._rotateEnd.set( event.pageX, event.pageY );
939
1266
 
940
- const position = getSecondPointerPosition( event );
1267
+ } else {
941
1268
 
942
- const x = 0.5 * ( event.pageX + position.x );
943
- const y = 0.5 * ( event.pageY + position.y );
1269
+ const position = this._getSecondPointerPosition( event );
944
1270
 
945
- panEnd.set( x, y );
1271
+ const x = 0.5 * ( event.pageX + position.x );
1272
+ const y = 0.5 * ( event.pageY + position.y );
946
1273
 
947
- }
1274
+ this._rotateEnd.set( x, y );
948
1275
 
949
- panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );
1276
+ }
950
1277
 
951
- pan( panDelta.x, panDelta.y );
1278
+ this._rotateDelta.subVectors( this._rotateEnd, this._rotateStart ).multiplyScalar( this.rotateSpeed );
952
1279
 
953
- panStart.copy( panEnd );
1280
+ const element = this.domElement;
954
1281
 
955
- }
1282
+ this._rotateLeft( _twoPI * this._rotateDelta.x / element.clientHeight ); // yes, height
956
1283
 
957
- function handleTouchMoveDolly( event ) {
1284
+ this._rotateUp( _twoPI * this._rotateDelta.y / element.clientHeight );
958
1285
 
959
- const position = getSecondPointerPosition( event );
1286
+ this._rotateStart.copy( this._rotateEnd );
960
1287
 
961
- const dx = event.pageX - position.x;
962
- const dy = event.pageY - position.y;
1288
+ }
963
1289
 
964
- const distance = Math.sqrt( dx * dx + dy * dy );
1290
+ _handleTouchMovePan( event ) {
965
1291
 
966
- dollyEnd.set( 0, distance );
1292
+ if ( this._pointers.length === 1 ) {
967
1293
 
968
- dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );
1294
+ this._panEnd.set( event.pageX, event.pageY );
969
1295
 
970
- dollyOut( dollyDelta.y );
1296
+ } else {
971
1297
 
972
- dollyStart.copy( dollyEnd );
1298
+ const position = this._getSecondPointerPosition( event );
973
1299
 
974
- const centerX = ( event.pageX + position.x ) * 0.5;
975
- const centerY = ( event.pageY + position.y ) * 0.5;
1300
+ const x = 0.5 * ( event.pageX + position.x );
1301
+ const y = 0.5 * ( event.pageY + position.y );
976
1302
 
977
- updateZoomParameters( centerX, centerY );
1303
+ this._panEnd.set( x, y );
978
1304
 
979
1305
  }
980
1306
 
981
- function handleTouchMoveDollyPan( event ) {
1307
+ this._panDelta.subVectors( this._panEnd, this._panStart ).multiplyScalar( this.panSpeed );
982
1308
 
983
- if ( scope.enableZoom ) handleTouchMoveDolly( event );
1309
+ this._pan( this._panDelta.x, this._panDelta.y );
984
1310
 
985
- if ( scope.enablePan ) handleTouchMovePan( event );
1311
+ this._panStart.copy( this._panEnd );
986
1312
 
987
- }
1313
+ }
988
1314
 
989
- function handleTouchMoveDollyRotate( event ) {
1315
+ _handleTouchMoveDolly( event ) {
990
1316
 
991
- if ( scope.enableZoom ) handleTouchMoveDolly( event );
1317
+ const position = this._getSecondPointerPosition( event );
992
1318
 
993
- if ( scope.enableRotate ) handleTouchMoveRotate( event );
1319
+ const dx = event.pageX - position.x;
1320
+ const dy = event.pageY - position.y;
994
1321
 
995
- }
1322
+ const distance = Math.sqrt( dx * dx + dy * dy );
996
1323
 
997
- //
998
- // event handlers - FSM: listen for events and reset state
999
- //
1324
+ this._dollyEnd.set( 0, distance );
1000
1325
 
1001
- function onPointerDown( event ) {
1326
+ this._dollyDelta.set( 0, Math.pow( this._dollyEnd.y / this._dollyStart.y, this.zoomSpeed ) );
1002
1327
 
1003
- if ( scope.enabled === false ) return;
1328
+ this._dollyOut( this._dollyDelta.y );
1004
1329
 
1005
- if ( pointers.length === 0 ) {
1330
+ this._dollyStart.copy( this._dollyEnd );
1006
1331
 
1007
- scope.domElement.setPointerCapture( event.pointerId );
1332
+ const centerX = ( event.pageX + position.x ) * 0.5;
1333
+ const centerY = ( event.pageY + position.y ) * 0.5;
1008
1334
 
1009
- scope.domElement.addEventListener( 'pointermove', onPointerMove );
1010
- scope.domElement.addEventListener( 'pointerup', onPointerUp );
1335
+ this._updateZoomParameters( centerX, centerY );
1011
1336
 
1012
- }
1337
+ }
1013
1338
 
1014
- //
1339
+ _handleTouchMoveDollyPan( event ) {
1015
1340
 
1016
- addPointer( event );
1341
+ if ( this.enableZoom ) this._handleTouchMoveDolly( event );
1017
1342
 
1018
- if ( event.pointerType === 'touch' ) {
1343
+ if ( this.enablePan ) this._handleTouchMovePan( event );
1019
1344
 
1020
- onTouchStart( event );
1345
+ }
1021
1346
 
1022
- } else {
1347
+ _handleTouchMoveDollyRotate( event ) {
1023
1348
 
1024
- onMouseDown( event );
1349
+ if ( this.enableZoom ) this._handleTouchMoveDolly( event );
1025
1350
 
1026
- }
1351
+ if ( this.enableRotate ) this._handleTouchMoveRotate( event );
1027
1352
 
1028
- }
1353
+ }
1029
1354
 
1030
- function onPointerMove( event ) {
1355
+ // pointers
1031
1356
 
1032
- if ( scope.enabled === false ) return;
1357
+ _addPointer( event ) {
1033
1358
 
1034
- if ( event.pointerType === 'touch' ) {
1359
+ this._pointers.push( event.pointerId );
1035
1360
 
1036
- onTouchMove( event );
1361
+ }
1037
1362
 
1038
- } else {
1363
+ _removePointer( event ) {
1039
1364
 
1040
- onMouseMove( event );
1365
+ delete this._pointerPositions[ event.pointerId ];
1366
+
1367
+ for ( let i = 0; i < this._pointers.length; i ++ ) {
1368
+
1369
+ if ( this._pointers[ i ] == event.pointerId ) {
1370
+
1371
+ this._pointers.splice( i, 1 );
1372
+ return;
1041
1373
 
1042
1374
  }
1043
1375
 
1044
1376
  }
1045
1377
 
1046
- function onPointerUp( event ) {
1378
+ }
1047
1379
 
1048
- removePointer( event );
1380
+ _isTrackingPointer( event ) {
1049
1381
 
1050
- switch ( pointers.length ) {
1382
+ for ( let i = 0; i < this._pointers.length; i ++ ) {
1051
1383
 
1052
- case 0:
1384
+ if ( this._pointers[ i ] == event.pointerId ) return true;
1053
1385
 
1054
- scope.domElement.releasePointerCapture( event.pointerId );
1386
+ }
1055
1387
 
1056
- scope.domElement.removeEventListener( 'pointermove', onPointerMove );
1057
- scope.domElement.removeEventListener( 'pointerup', onPointerUp );
1388
+ return false;
1058
1389
 
1059
- scope.dispatchEvent( _endEvent );
1390
+ }
1060
1391
 
1061
- state = STATE.NONE;
1392
+ _trackPointer( event ) {
1062
1393
 
1063
- break;
1394
+ let position = this._pointerPositions[ event.pointerId ];
1064
1395
 
1065
- case 1:
1396
+ if ( position === undefined ) {
1066
1397
 
1067
- const pointerId = pointers[ 0 ];
1068
- const position = pointerPositions[ pointerId ];
1398
+ position = new Vector2();
1399
+ this._pointerPositions[ event.pointerId ] = position;
1069
1400
 
1070
- // minimal placeholder event - allows state correction on pointer-up
1071
- onTouchStart( { pointerId: pointerId, pageX: position.x, pageY: position.y } );
1401
+ }
1072
1402
 
1073
- break;
1403
+ position.set( event.pageX, event.pageY );
1074
1404
 
1075
- }
1405
+ }
1076
1406
 
1077
- }
1407
+ _getSecondPointerPosition( event ) {
1078
1408
 
1079
- function onMouseDown( event ) {
1409
+ const pointerId = ( event.pointerId === this._pointers[ 0 ] ) ? this._pointers[ 1 ] : this._pointers[ 0 ];
1080
1410
 
1081
- let mouseAction;
1411
+ return this._pointerPositions[ pointerId ];
1082
1412
 
1083
- switch ( event.button ) {
1413
+ }
1084
1414
 
1085
- case 0:
1415
+ //
1086
1416
 
1087
- mouseAction = scope.mouseButtons.LEFT;
1088
- break;
1417
+ _customWheelEvent( event ) {
1089
1418
 
1090
- case 1:
1419
+ const mode = event.deltaMode;
1091
1420
 
1092
- mouseAction = scope.mouseButtons.MIDDLE;
1093
- break;
1421
+ // minimal wheel event altered to meet delta-zoom demand
1422
+ const newEvent = {
1423
+ clientX: event.clientX,
1424
+ clientY: event.clientY,
1425
+ deltaY: event.deltaY,
1426
+ };
1094
1427
 
1095
- case 2:
1428
+ switch ( mode ) {
1096
1429
 
1097
- mouseAction = scope.mouseButtons.RIGHT;
1098
- break;
1430
+ case 1: // LINE_MODE
1431
+ newEvent.deltaY *= 16;
1432
+ break;
1099
1433
 
1100
- default:
1434
+ case 2: // PAGE_MODE
1435
+ newEvent.deltaY *= 100;
1436
+ break;
1101
1437
 
1102
- mouseAction = - 1;
1438
+ }
1103
1439
 
1104
- }
1440
+ // detect if event was triggered by pinching
1441
+ if ( event.ctrlKey && ! this._controlActive ) {
1105
1442
 
1106
- switch ( mouseAction ) {
1443
+ newEvent.deltaY *= 10;
1107
1444
 
1108
- case MOUSE.DOLLY:
1445
+ }
1109
1446
 
1110
- if ( scope.enableZoom === false ) return;
1447
+ return newEvent;
1111
1448
 
1112
- handleMouseDownDolly( event );
1449
+ }
1113
1450
 
1114
- state = STATE.DOLLY;
1451
+ }
1115
1452
 
1116
- break;
1453
+ function onPointerDown( event ) {
1117
1454
 
1118
- case MOUSE.ROTATE:
1455
+ if ( this.enabled === false ) return;
1119
1456
 
1120
- if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
1457
+ if ( this._pointers.length === 0 ) {
1121
1458
 
1122
- if ( scope.enablePan === false ) return;
1459
+ this.domElement.setPointerCapture( event.pointerId );
1123
1460
 
1124
- handleMouseDownPan( event );
1461
+ this.domElement.addEventListener( 'pointermove', this._onPointerMove );
1462
+ this.domElement.addEventListener( 'pointerup', this._onPointerUp );
1125
1463
 
1126
- state = STATE.PAN;
1464
+ }
1127
1465
 
1128
- } else {
1466
+ //
1129
1467
 
1130
- if ( scope.enableRotate === false ) return;
1468
+ if ( this._isTrackingPointer( event ) ) return;
1131
1469
 
1132
- handleMouseDownRotate( event );
1470
+ //
1133
1471
 
1134
- state = STATE.ROTATE;
1472
+ this._addPointer( event );
1135
1473
 
1136
- }
1474
+ if ( event.pointerType === 'touch' ) {
1137
1475
 
1138
- break;
1476
+ this._onTouchStart( event );
1139
1477
 
1140
- case MOUSE.PAN:
1478
+ } else {
1141
1479
 
1142
- if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
1480
+ this._onMouseDown( event );
1143
1481
 
1144
- if ( scope.enableRotate === false ) return;
1482
+ }
1145
1483
 
1146
- handleMouseDownRotate( event );
1484
+ }
1147
1485
 
1148
- state = STATE.ROTATE;
1486
+ function onPointerMove( event ) {
1149
1487
 
1150
- } else {
1488
+ if ( this.enabled === false ) return;
1151
1489
 
1152
- if ( scope.enablePan === false ) return;
1490
+ if ( event.pointerType === 'touch' ) {
1153
1491
 
1154
- handleMouseDownPan( event );
1492
+ this._onTouchMove( event );
1155
1493
 
1156
- state = STATE.PAN;
1494
+ } else {
1157
1495
 
1158
- }
1496
+ this._onMouseMove( event );
1159
1497
 
1160
- break;
1498
+ }
1161
1499
 
1162
- default:
1500
+ }
1163
1501
 
1164
- state = STATE.NONE;
1502
+ function onPointerUp( event ) {
1165
1503
 
1166
- }
1504
+ this._removePointer( event );
1167
1505
 
1168
- if ( state !== STATE.NONE ) {
1506
+ switch ( this._pointers.length ) {
1169
1507
 
1170
- scope.dispatchEvent( _startEvent );
1508
+ case 0:
1171
1509
 
1172
- }
1510
+ this.domElement.releasePointerCapture( event.pointerId );
1173
1511
 
1174
- }
1512
+ this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
1513
+ this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
1175
1514
 
1176
- function onMouseMove( event ) {
1515
+ this.dispatchEvent( _endEvent );
1177
1516
 
1178
- switch ( state ) {
1517
+ this.state = _STATE.NONE;
1179
1518
 
1180
- case STATE.ROTATE:
1519
+ break;
1181
1520
 
1182
- if ( scope.enableRotate === false ) return;
1521
+ case 1:
1183
1522
 
1184
- handleMouseMoveRotate( event );
1523
+ const pointerId = this._pointers[ 0 ];
1524
+ const position = this._pointerPositions[ pointerId ];
1185
1525
 
1186
- break;
1526
+ // minimal placeholder event - allows state correction on pointer-up
1527
+ this._onTouchStart( { pointerId: pointerId, pageX: position.x, pageY: position.y } );
1187
1528
 
1188
- case STATE.DOLLY:
1529
+ break;
1189
1530
 
1190
- if ( scope.enableZoom === false ) return;
1531
+ }
1191
1532
 
1192
- handleMouseMoveDolly( event );
1533
+ }
1193
1534
 
1194
- break;
1535
+ function onMouseDown( event ) {
1195
1536
 
1196
- case STATE.PAN:
1537
+ let mouseAction;
1197
1538
 
1198
- if ( scope.enablePan === false ) return;
1539
+ switch ( event.button ) {
1199
1540
 
1200
- handleMouseMovePan( event );
1541
+ case 0:
1201
1542
 
1202
- break;
1543
+ mouseAction = this.mouseButtons.LEFT;
1544
+ break;
1203
1545
 
1204
- }
1546
+ case 1:
1205
1547
 
1206
- }
1548
+ mouseAction = this.mouseButtons.MIDDLE;
1549
+ break;
1207
1550
 
1208
- function onMouseWheel( event ) {
1551
+ case 2:
1209
1552
 
1210
- if ( scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE ) return;
1553
+ mouseAction = this.mouseButtons.RIGHT;
1554
+ break;
1211
1555
 
1212
- event.preventDefault();
1556
+ default:
1213
1557
 
1214
- scope.dispatchEvent( _startEvent );
1558
+ mouseAction = - 1;
1215
1559
 
1216
- handleMouseWheel( customWheelEvent( event ) );
1560
+ }
1217
1561
 
1218
- scope.dispatchEvent( _endEvent );
1562
+ switch ( mouseAction ) {
1219
1563
 
1220
- }
1564
+ case MOUSE.DOLLY:
1221
1565
 
1222
- function customWheelEvent( event ) {
1566
+ if ( this.enableZoom === false ) return;
1223
1567
 
1224
- const mode = event.deltaMode;
1568
+ this._handleMouseDownDolly( event );
1225
1569
 
1226
- // minimal wheel event altered to meet delta-zoom demand
1227
- const newEvent = {
1228
- clientX: event.clientX,
1229
- clientY: event.clientY,
1230
- deltaY: event.deltaY,
1231
- };
1570
+ this.state = _STATE.DOLLY;
1232
1571
 
1233
- switch ( mode ) {
1572
+ break;
1234
1573
 
1235
- case 1: // LINE_MODE
1236
- newEvent.deltaY *= 16;
1237
- break;
1574
+ case MOUSE.ROTATE:
1238
1575
 
1239
- case 2: // PAGE_MODE
1240
- newEvent.deltaY *= 100;
1241
- break;
1576
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
1242
1577
 
1243
- }
1578
+ if ( this.enablePan === false ) return;
1579
+
1580
+ this._handleMouseDownPan( event );
1581
+
1582
+ this.state = _STATE.PAN;
1583
+
1584
+ } else {
1585
+
1586
+ if ( this.enableRotate === false ) return;
1244
1587
 
1245
- // detect if event was triggered by pinching
1246
- if ( event.ctrlKey && ! controlActive ) {
1588
+ this._handleMouseDownRotate( event );
1247
1589
 
1248
- newEvent.deltaY *= 10;
1590
+ this.state = _STATE.ROTATE;
1249
1591
 
1250
1592
  }
1251
1593
 
1252
- return newEvent;
1594
+ break;
1253
1595
 
1254
- }
1596
+ case MOUSE.PAN:
1597
+
1598
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
1599
+
1600
+ if ( this.enableRotate === false ) return;
1255
1601
 
1256
- function interceptControlDown( event ) {
1602
+ this._handleMouseDownRotate( event );
1257
1603
 
1258
- if ( event.key === 'Control' ) {
1604
+ this.state = _STATE.ROTATE;
1259
1605
 
1260
- controlActive = true;
1606
+ } else {
1261
1607
 
1608
+ if ( this.enablePan === false ) return;
1262
1609
 
1263
- const document = scope.domElement.getRootNode(); // offscreen canvas compatibility
1610
+ this._handleMouseDownPan( event );
1264
1611
 
1265
- document.addEventListener( 'keyup', interceptControlUp, { passive: true, capture: true } );
1612
+ this.state = _STATE.PAN;
1266
1613
 
1267
1614
  }
1268
1615
 
1269
- }
1616
+ break;
1270
1617
 
1271
- function interceptControlUp( event ) {
1618
+ default:
1272
1619
 
1273
- if ( event.key === 'Control' ) {
1620
+ this.state = _STATE.NONE;
1274
1621
 
1275
- controlActive = false;
1622
+ }
1276
1623
 
1624
+ if ( this.state !== _STATE.NONE ) {
1277
1625
 
1278
- const document = scope.domElement.getRootNode(); // offscreen canvas compatibility
1626
+ this.dispatchEvent( _startEvent );
1279
1627
 
1280
- document.removeEventListener( 'keyup', interceptControlUp, { passive: true, capture: true } );
1628
+ }
1281
1629
 
1282
- }
1630
+ }
1283
1631
 
1284
- }
1632
+ function onMouseMove( event ) {
1285
1633
 
1286
- function onKeyDown( event ) {
1634
+ switch ( this.state ) {
1287
1635
 
1288
- if ( scope.enabled === false || scope.enablePan === false ) return;
1636
+ case _STATE.ROTATE:
1289
1637
 
1290
- handleKeyDown( event );
1638
+ if ( this.enableRotate === false ) return;
1291
1639
 
1292
- }
1640
+ this._handleMouseMoveRotate( event );
1641
+
1642
+ break;
1643
+
1644
+ case _STATE.DOLLY:
1293
1645
 
1294
- function onTouchStart( event ) {
1646
+ if ( this.enableZoom === false ) return;
1295
1647
 
1296
- trackPointer( event );
1648
+ this._handleMouseMoveDolly( event );
1297
1649
 
1298
- switch ( pointers.length ) {
1650
+ break;
1299
1651
 
1300
- case 1:
1652
+ case _STATE.PAN:
1301
1653
 
1302
- switch ( scope.touches.ONE ) {
1654
+ if ( this.enablePan === false ) return;
1303
1655
 
1304
- case TOUCH.ROTATE:
1656
+ this._handleMouseMovePan( event );
1305
1657
 
1306
- if ( scope.enableRotate === false ) return;
1658
+ break;
1307
1659
 
1308
- handleTouchStartRotate( event );
1660
+ }
1309
1661
 
1310
- state = STATE.TOUCH_ROTATE;
1662
+ }
1311
1663
 
1312
- break;
1664
+ function onMouseWheel( event ) {
1313
1665
 
1314
- case TOUCH.PAN:
1666
+ if ( this.enabled === false || this.enableZoom === false || this.state !== _STATE.NONE ) return;
1315
1667
 
1316
- if ( scope.enablePan === false ) return;
1668
+ event.preventDefault();
1317
1669
 
1318
- handleTouchStartPan( event );
1670
+ this.dispatchEvent( _startEvent );
1319
1671
 
1320
- state = STATE.TOUCH_PAN;
1672
+ this._handleMouseWheel( this._customWheelEvent( event ) );
1321
1673
 
1322
- break;
1674
+ this.dispatchEvent( _endEvent );
1323
1675
 
1324
- default:
1676
+ }
1325
1677
 
1326
- state = STATE.NONE;
1678
+ function onKeyDown( event ) {
1327
1679
 
1328
- }
1680
+ if ( this.enabled === false ) return;
1329
1681
 
1330
- break;
1682
+ this._handleKeyDown( event );
1331
1683
 
1332
- case 2:
1684
+ }
1333
1685
 
1334
- switch ( scope.touches.TWO ) {
1686
+ function onTouchStart( event ) {
1335
1687
 
1336
- case TOUCH.DOLLY_PAN:
1688
+ this._trackPointer( event );
1337
1689
 
1338
- if ( scope.enableZoom === false && scope.enablePan === false ) return;
1690
+ switch ( this._pointers.length ) {
1339
1691
 
1340
- handleTouchStartDollyPan( event );
1692
+ case 1:
1341
1693
 
1342
- state = STATE.TOUCH_DOLLY_PAN;
1694
+ switch ( this.touches.ONE ) {
1343
1695
 
1344
- break;
1696
+ case TOUCH.ROTATE:
1345
1697
 
1346
- case TOUCH.DOLLY_ROTATE:
1698
+ if ( this.enableRotate === false ) return;
1347
1699
 
1348
- if ( scope.enableZoom === false && scope.enableRotate === false ) return;
1700
+ this._handleTouchStartRotate( event );
1349
1701
 
1350
- handleTouchStartDollyRotate( event );
1702
+ this.state = _STATE.TOUCH_ROTATE;
1351
1703
 
1352
- state = STATE.TOUCH_DOLLY_ROTATE;
1704
+ break;
1353
1705
 
1354
- break;
1706
+ case TOUCH.PAN:
1355
1707
 
1356
- default:
1708
+ if ( this.enablePan === false ) return;
1357
1709
 
1358
- state = STATE.NONE;
1710
+ this._handleTouchStartPan( event );
1359
1711
 
1360
- }
1712
+ this.state = _STATE.TOUCH_PAN;
1361
1713
 
1362
1714
  break;
1363
1715
 
1364
1716
  default:
1365
1717
 
1366
- state = STATE.NONE;
1718
+ this.state = _STATE.NONE;
1367
1719
 
1368
1720
  }
1369
1721
 
1370
- if ( state !== STATE.NONE ) {
1722
+ break;
1371
1723
 
1372
- scope.dispatchEvent( _startEvent );
1724
+ case 2:
1373
1725
 
1374
- }
1726
+ switch ( this.touches.TWO ) {
1375
1727
 
1376
- }
1728
+ case TOUCH.DOLLY_PAN:
1377
1729
 
1378
- function onTouchMove( event ) {
1730
+ if ( this.enableZoom === false && this.enablePan === false ) return;
1379
1731
 
1380
- trackPointer( event );
1732
+ this._handleTouchStartDollyPan( event );
1381
1733
 
1382
- switch ( state ) {
1734
+ this.state = _STATE.TOUCH_DOLLY_PAN;
1383
1735
 
1384
- case STATE.TOUCH_ROTATE:
1736
+ break;
1385
1737
 
1386
- if ( scope.enableRotate === false ) return;
1738
+ case TOUCH.DOLLY_ROTATE:
1387
1739
 
1388
- handleTouchMoveRotate( event );
1740
+ if ( this.enableZoom === false && this.enableRotate === false ) return;
1389
1741
 
1390
- scope.update();
1742
+ this._handleTouchStartDollyRotate( event );
1743
+
1744
+ this.state = _STATE.TOUCH_DOLLY_ROTATE;
1391
1745
 
1392
1746
  break;
1393
1747
 
1394
- case STATE.TOUCH_PAN:
1748
+ default:
1395
1749
 
1396
- if ( scope.enablePan === false ) return;
1750
+ this.state = _STATE.NONE;
1397
1751
 
1398
- handleTouchMovePan( event );
1752
+ }
1399
1753
 
1400
- scope.update();
1754
+ break;
1401
1755
 
1402
- break;
1756
+ default:
1403
1757
 
1404
- case STATE.TOUCH_DOLLY_PAN:
1758
+ this.state = _STATE.NONE;
1405
1759
 
1406
- if ( scope.enableZoom === false && scope.enablePan === false ) return;
1760
+ }
1407
1761
 
1408
- handleTouchMoveDollyPan( event );
1762
+ if ( this.state !== _STATE.NONE ) {
1409
1763
 
1410
- scope.update();
1764
+ this.dispatchEvent( _startEvent );
1411
1765
 
1412
- break;
1766
+ }
1413
1767
 
1414
- case STATE.TOUCH_DOLLY_ROTATE:
1768
+ }
1415
1769
 
1416
- if ( scope.enableZoom === false && scope.enableRotate === false ) return;
1770
+ function onTouchMove( event ) {
1417
1771
 
1418
- handleTouchMoveDollyRotate( event );
1772
+ this._trackPointer( event );
1419
1773
 
1420
- scope.update();
1774
+ switch ( this.state ) {
1421
1775
 
1422
- break;
1776
+ case _STATE.TOUCH_ROTATE:
1423
1777
 
1424
- default:
1778
+ if ( this.enableRotate === false ) return;
1425
1779
 
1426
- state = STATE.NONE;
1780
+ this._handleTouchMoveRotate( event );
1427
1781
 
1428
- }
1782
+ this.update();
1429
1783
 
1430
- }
1784
+ break;
1431
1785
 
1432
- function onContextMenu( event ) {
1786
+ case _STATE.TOUCH_PAN:
1433
1787
 
1434
- if ( scope.enabled === false ) return;
1788
+ if ( this.enablePan === false ) return;
1435
1789
 
1436
- event.preventDefault();
1790
+ this._handleTouchMovePan( event );
1437
1791
 
1438
- }
1792
+ this.update();
1439
1793
 
1440
- function addPointer( event ) {
1794
+ break;
1441
1795
 
1442
- pointers.push( event.pointerId );
1796
+ case _STATE.TOUCH_DOLLY_PAN:
1443
1797
 
1444
- }
1798
+ if ( this.enableZoom === false && this.enablePan === false ) return;
1445
1799
 
1446
- function removePointer( event ) {
1800
+ this._handleTouchMoveDollyPan( event );
1447
1801
 
1448
- delete pointerPositions[ event.pointerId ];
1802
+ this.update();
1449
1803
 
1450
- for ( let i = 0; i < pointers.length; i ++ ) {
1804
+ break;
1451
1805
 
1452
- if ( pointers[ i ] == event.pointerId ) {
1806
+ case _STATE.TOUCH_DOLLY_ROTATE:
1453
1807
 
1454
- pointers.splice( i, 1 );
1455
- return;
1808
+ if ( this.enableZoom === false && this.enableRotate === false ) return;
1456
1809
 
1457
- }
1810
+ this._handleTouchMoveDollyRotate( event );
1458
1811
 
1459
- }
1812
+ this.update();
1460
1813
 
1461
- }
1814
+ break;
1815
+
1816
+ default:
1817
+
1818
+ this.state = _STATE.NONE;
1462
1819
 
1463
- function trackPointer( event ) {
1820
+ }
1464
1821
 
1465
- let position = pointerPositions[ event.pointerId ];
1822
+ }
1466
1823
 
1467
- if ( position === undefined ) {
1824
+ function onContextMenu( event ) {
1468
1825
 
1469
- position = new Vector2();
1470
- pointerPositions[ event.pointerId ] = position;
1826
+ if ( this.enabled === false ) return;
1471
1827
 
1472
- }
1828
+ event.preventDefault();
1473
1829
 
1474
- position.set( event.pageX, event.pageY );
1830
+ }
1475
1831
 
1476
- }
1832
+ function interceptControlDown( event ) {
1477
1833
 
1478
- function getSecondPointerPosition( event ) {
1834
+ if ( event.key === 'Control' ) {
1479
1835
 
1480
- const pointerId = ( event.pointerId === pointers[ 0 ] ) ? pointers[ 1 ] : pointers[ 0 ];
1836
+ this._controlActive = true;
1481
1837
 
1482
- return pointerPositions[ pointerId ];
1838
+ const document = this.domElement.getRootNode(); // offscreen canvas compatibility
1483
1839
 
1484
- }
1840
+ document.addEventListener( 'keyup', this._interceptControlUp, { passive: true, capture: true } );
1485
1841
 
1486
- //
1842
+ }
1487
1843
 
1488
- scope.domElement.addEventListener( 'contextmenu', onContextMenu );
1844
+ }
1489
1845
 
1490
- scope.domElement.addEventListener( 'pointerdown', onPointerDown );
1491
- scope.domElement.addEventListener( 'pointercancel', onPointerUp );
1492
- scope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );
1846
+ function interceptControlUp( event ) {
1493
1847
 
1494
- const document = scope.domElement.getRootNode(); // offscreen canvas compatibility
1848
+ if ( event.key === 'Control' ) {
1495
1849
 
1496
- document.addEventListener( 'keydown', interceptControlDown, { passive: true, capture: true } );
1850
+ this._controlActive = false;
1497
1851
 
1498
- // force an update at start
1852
+ const document = this.domElement.getRootNode(); // offscreen canvas compatibility
1499
1853
 
1500
- this.update();
1854
+ document.removeEventListener( 'keyup', this._interceptControlUp, { passive: true, capture: true } );
1501
1855
 
1502
1856
  }
1503
1857