three-stdlib 2.35.2 → 2.35.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (518) hide show
  1. package/_polyfill/CapsuleGeometry.cjs +20 -17
  2. package/_polyfill/CapsuleGeometry.cjs.map +1 -1
  3. package/_polyfill/CapsuleGeometry.js +20 -17
  4. package/_polyfill/CapsuleGeometry.js.map +1 -1
  5. package/_polyfill/constants.cjs +1 -1
  6. package/_polyfill/constants.cjs.map +1 -1
  7. package/_polyfill/constants.js +1 -1
  8. package/_polyfill/constants.js.map +1 -1
  9. package/animation/AnimationClipCreator.cjs +13 -13
  10. package/animation/AnimationClipCreator.cjs.map +1 -1
  11. package/animation/AnimationClipCreator.js +13 -13
  12. package/animation/AnimationClipCreator.js.map +1 -1
  13. package/animation/CCDIKSolver.cjs +11 -11
  14. package/animation/CCDIKSolver.cjs.map +1 -1
  15. package/animation/CCDIKSolver.js +12 -12
  16. package/animation/CCDIKSolver.js.map +1 -1
  17. package/animation/MMDAnimationHelper.cjs +1 -1
  18. package/animation/MMDAnimationHelper.cjs.map +1 -1
  19. package/animation/MMDAnimationHelper.js +1 -1
  20. package/animation/MMDAnimationHelper.js.map +1 -1
  21. package/animation/MMDPhysics.cjs +4 -4
  22. package/animation/MMDPhysics.cjs.map +1 -1
  23. package/animation/MMDPhysics.js +4 -4
  24. package/animation/MMDPhysics.js.map +1 -1
  25. package/controls/ArcballControls.cjs +2 -2
  26. package/controls/ArcballControls.cjs.map +1 -1
  27. package/controls/ArcballControls.js +3 -3
  28. package/controls/ArcballControls.js.map +1 -1
  29. package/controls/FirstPersonControls.cjs +1 -1
  30. package/controls/FirstPersonControls.cjs.map +1 -1
  31. package/controls/FirstPersonControls.js +1 -1
  32. package/controls/FirstPersonControls.js.map +1 -1
  33. package/controls/OrbitControls.cjs +2 -2
  34. package/controls/OrbitControls.cjs.map +1 -1
  35. package/controls/OrbitControls.js +3 -3
  36. package/controls/OrbitControls.js.map +1 -1
  37. package/controls/PointerLockControls.cjs +2 -2
  38. package/controls/PointerLockControls.cjs.map +1 -1
  39. package/controls/PointerLockControls.js +3 -3
  40. package/controls/PointerLockControls.js.map +1 -1
  41. package/csm/CSM.cjs +4 -4
  42. package/csm/CSM.cjs.map +1 -1
  43. package/csm/CSM.js +5 -5
  44. package/csm/CSM.js.map +1 -1
  45. package/csm/CSMFrustum.cjs +1 -1
  46. package/csm/CSMFrustum.cjs.map +1 -1
  47. package/csm/CSMFrustum.js +2 -2
  48. package/csm/CSMFrustum.js.map +1 -1
  49. package/deprecated/Geometry.cjs +722 -715
  50. package/deprecated/Geometry.cjs.map +1 -1
  51. package/deprecated/Geometry.js +723 -716
  52. package/deprecated/Geometry.js.map +1 -1
  53. package/effects/AnaglyphEffect.cjs +2 -1
  54. package/effects/AnaglyphEffect.cjs.map +1 -1
  55. package/effects/AnaglyphEffect.js +3 -2
  56. package/effects/AnaglyphEffect.js.map +1 -1
  57. package/effects/OutlineEffect.cjs +2 -1
  58. package/effects/OutlineEffect.cjs.map +1 -1
  59. package/effects/OutlineEffect.js +3 -2
  60. package/effects/OutlineEffect.js.map +1 -1
  61. package/effects/ParallaxBarrierEffect.cjs +2 -1
  62. package/effects/ParallaxBarrierEffect.cjs.map +1 -1
  63. package/effects/ParallaxBarrierEffect.js +3 -2
  64. package/effects/ParallaxBarrierEffect.js.map +1 -1
  65. package/exporters/DRACOExporter.cjs +133 -122
  66. package/exporters/DRACOExporter.cjs.map +1 -1
  67. package/exporters/DRACOExporter.d.ts +23 -21
  68. package/exporters/DRACOExporter.js +133 -122
  69. package/exporters/DRACOExporter.js.map +1 -1
  70. package/exporters/GLTFExporter.cjs +170 -167
  71. package/exporters/GLTFExporter.cjs.map +1 -1
  72. package/exporters/GLTFExporter.js +170 -167
  73. package/exporters/GLTFExporter.js.map +1 -1
  74. package/geometries/LightningStrike.cjs +524 -515
  75. package/geometries/LightningStrike.cjs.map +1 -1
  76. package/geometries/LightningStrike.js +524 -515
  77. package/geometries/LightningStrike.js.map +1 -1
  78. package/geometries/RoundedBoxGeometry.cjs +1 -1
  79. package/geometries/RoundedBoxGeometry.cjs.map +1 -1
  80. package/geometries/RoundedBoxGeometry.js +2 -2
  81. package/geometries/RoundedBoxGeometry.js.map +1 -1
  82. package/helpers/RaycasterHelper.cjs +2 -2
  83. package/helpers/RaycasterHelper.cjs.map +1 -1
  84. package/helpers/RaycasterHelper.js +3 -3
  85. package/helpers/RaycasterHelper.js.map +1 -1
  86. package/helpers/VertexNormalsHelper.cjs +3 -3
  87. package/helpers/VertexNormalsHelper.cjs.map +1 -1
  88. package/helpers/VertexNormalsHelper.js +4 -4
  89. package/helpers/VertexNormalsHelper.js.map +1 -1
  90. package/helpers/VertexTangentsHelper.cjs +2 -2
  91. package/helpers/VertexTangentsHelper.cjs.map +1 -1
  92. package/helpers/VertexTangentsHelper.js +3 -3
  93. package/helpers/VertexTangentsHelper.js.map +1 -1
  94. package/interactive/InteractiveGroup.cjs +1 -1
  95. package/interactive/InteractiveGroup.cjs.map +1 -1
  96. package/interactive/InteractiveGroup.js +2 -2
  97. package/interactive/InteractiveGroup.js.map +1 -1
  98. package/interactive/SelectionBox.cjs +15 -15
  99. package/interactive/SelectionBox.cjs.map +1 -1
  100. package/interactive/SelectionBox.js +16 -16
  101. package/interactive/SelectionBox.js.map +1 -1
  102. package/libs/chevrotain.cjs +1 -1
  103. package/libs/chevrotain.cjs.map +1 -1
  104. package/libs/chevrotain.js +1 -1
  105. package/libs/chevrotain.js.map +1 -1
  106. package/libs/lottie.cjs +1 -1
  107. package/libs/lottie.cjs.map +1 -1
  108. package/libs/lottie.js +1 -1
  109. package/libs/lottie.js.map +1 -1
  110. package/libs/opentype.cjs +1 -1
  111. package/libs/opentype.cjs.map +1 -1
  112. package/libs/opentype.js +1 -1
  113. package/libs/opentype.js.map +1 -1
  114. package/lights/LightProbeGenerator.cjs +5 -5
  115. package/lights/LightProbeGenerator.cjs.map +1 -1
  116. package/lights/LightProbeGenerator.js +5 -5
  117. package/lights/LightProbeGenerator.js.map +1 -1
  118. package/lights/RectAreaLightUniformsLib.cjs +3 -3
  119. package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
  120. package/lights/RectAreaLightUniformsLib.js +3 -3
  121. package/lights/RectAreaLightUniformsLib.js.map +1 -1
  122. package/lines/LineMaterial.cjs +2 -1
  123. package/lines/LineMaterial.cjs.map +1 -1
  124. package/lines/LineMaterial.js +3 -2
  125. package/lines/LineMaterial.js.map +1 -1
  126. package/lines/LineSegments2.cjs +13 -13
  127. package/lines/LineSegments2.cjs.map +1 -1
  128. package/lines/LineSegments2.js +14 -14
  129. package/lines/LineSegments2.js.map +1 -1
  130. package/lines/LineSegmentsGeometry.cjs +2 -2
  131. package/lines/LineSegmentsGeometry.cjs.map +1 -1
  132. package/lines/LineSegmentsGeometry.js +3 -3
  133. package/lines/LineSegmentsGeometry.js.map +1 -1
  134. package/lines/Wireframe.cjs +3 -3
  135. package/lines/Wireframe.cjs.map +1 -1
  136. package/lines/Wireframe.js +4 -4
  137. package/lines/Wireframe.js.map +1 -1
  138. package/loaders/BasisTextureLoader.cjs +441 -435
  139. package/loaders/BasisTextureLoader.cjs.map +1 -1
  140. package/loaders/BasisTextureLoader.js +441 -435
  141. package/loaders/BasisTextureLoader.js.map +1 -1
  142. package/loaders/EXRLoader.cjs +2 -1
  143. package/loaders/EXRLoader.cjs.map +1 -1
  144. package/loaders/EXRLoader.js +3 -2
  145. package/loaders/EXRLoader.js.map +1 -1
  146. package/loaders/FBXLoader.cjs +2 -2
  147. package/loaders/FBXLoader.cjs.map +1 -1
  148. package/loaders/FBXLoader.js +2 -2
  149. package/loaders/FBXLoader.js.map +1 -1
  150. package/loaders/FontLoader.cjs +2 -2
  151. package/loaders/FontLoader.cjs.map +1 -1
  152. package/loaders/FontLoader.d.ts +2 -2
  153. package/loaders/FontLoader.js +2 -2
  154. package/loaders/FontLoader.js.map +1 -1
  155. package/loaders/GLTFLoader.cjs +2 -2
  156. package/loaders/GLTFLoader.cjs.map +1 -1
  157. package/loaders/GLTFLoader.js +2 -2
  158. package/loaders/GLTFLoader.js.map +1 -1
  159. package/loaders/KTX2Loader.cjs +377 -374
  160. package/loaders/KTX2Loader.cjs.map +1 -1
  161. package/loaders/KTX2Loader.js +377 -374
  162. package/loaders/KTX2Loader.js.map +1 -1
  163. package/loaders/LDrawLoader.cjs +5 -4
  164. package/loaders/LDrawLoader.cjs.map +1 -1
  165. package/loaders/LDrawLoader.js +6 -5
  166. package/loaders/LDrawLoader.js.map +1 -1
  167. package/loaders/OBJLoader.cjs +5 -5
  168. package/loaders/OBJLoader.cjs.map +1 -1
  169. package/loaders/OBJLoader.js +6 -6
  170. package/loaders/OBJLoader.js.map +1 -1
  171. package/loaders/PRWMLoader.cjs +46 -43
  172. package/loaders/PRWMLoader.cjs.map +1 -1
  173. package/loaders/PRWMLoader.js +46 -43
  174. package/loaders/PRWMLoader.js.map +1 -1
  175. package/loaders/SVGLoader.cjs +1694 -1688
  176. package/loaders/SVGLoader.cjs.map +1 -1
  177. package/loaders/SVGLoader.js +1694 -1688
  178. package/loaders/SVGLoader.js.map +1 -1
  179. package/loaders/XLoader.cjs +1 -1
  180. package/loaders/XLoader.cjs.map +1 -1
  181. package/loaders/XLoader.js +1 -1
  182. package/loaders/XLoader.js.map +1 -1
  183. package/math/Capsule.cjs +3 -3
  184. package/math/Capsule.cjs.map +1 -1
  185. package/math/Capsule.js +3 -3
  186. package/math/Capsule.js.map +1 -1
  187. package/math/ColorConverter.cjs +9 -9
  188. package/math/ColorConverter.cjs.map +1 -1
  189. package/math/ColorConverter.js +9 -9
  190. package/math/ColorConverter.js.map +1 -1
  191. package/math/ConvexHull.cjs +53 -50
  192. package/math/ConvexHull.cjs.map +1 -1
  193. package/math/ConvexHull.js +53 -50
  194. package/math/ConvexHull.js.map +1 -1
  195. package/math/ImprovedNoise.cjs +1 -1
  196. package/math/ImprovedNoise.cjs.map +1 -1
  197. package/math/ImprovedNoise.js +1 -1
  198. package/math/ImprovedNoise.js.map +1 -1
  199. package/math/MeshSurfaceSampler.cjs +2 -2
  200. package/math/MeshSurfaceSampler.cjs.map +1 -1
  201. package/math/MeshSurfaceSampler.js +2 -2
  202. package/math/MeshSurfaceSampler.js.map +1 -1
  203. package/math/OBB.cjs +14 -14
  204. package/math/OBB.cjs.map +1 -1
  205. package/math/OBB.js +15 -15
  206. package/math/OBB.js.map +1 -1
  207. package/math/Octree.cjs +7 -7
  208. package/math/Octree.cjs.map +1 -1
  209. package/math/Octree.js +8 -8
  210. package/math/Octree.js.map +1 -1
  211. package/misc/ConvexObjectBreaker.cjs +271 -268
  212. package/misc/ConvexObjectBreaker.cjs.map +1 -1
  213. package/misc/ConvexObjectBreaker.js +272 -269
  214. package/misc/ConvexObjectBreaker.js.map +1 -1
  215. package/misc/Gyroscope.cjs +6 -6
  216. package/misc/Gyroscope.cjs.map +1 -1
  217. package/misc/Gyroscope.js +7 -7
  218. package/misc/Gyroscope.js.map +1 -1
  219. package/modifiers/CurveModifier.cjs +1 -1
  220. package/modifiers/CurveModifier.cjs.map +1 -1
  221. package/modifiers/CurveModifier.js +2 -2
  222. package/modifiers/CurveModifier.js.map +1 -1
  223. package/modifiers/SimplifyModifier.cjs +2 -2
  224. package/modifiers/SimplifyModifier.cjs.map +1 -1
  225. package/modifiers/SimplifyModifier.js +2 -2
  226. package/modifiers/SimplifyModifier.js.map +1 -1
  227. package/objects/BatchedMesh.cjs +2 -2
  228. package/objects/BatchedMesh.cjs.map +1 -1
  229. package/objects/BatchedMesh.js +3 -3
  230. package/objects/BatchedMesh.js.map +1 -1
  231. package/objects/GroundProjectedEnv.cjs +2 -1
  232. package/objects/GroundProjectedEnv.cjs.map +1 -1
  233. package/objects/GroundProjectedEnv.js +3 -2
  234. package/objects/GroundProjectedEnv.js.map +1 -1
  235. package/objects/Lensflare.cjs +209 -206
  236. package/objects/Lensflare.cjs.map +1 -1
  237. package/objects/Lensflare.js +209 -206
  238. package/objects/Lensflare.js.map +1 -1
  239. package/objects/Reflector.cjs +154 -146
  240. package/objects/Reflector.cjs.map +1 -1
  241. package/objects/Reflector.js +154 -146
  242. package/objects/Reflector.js.map +1 -1
  243. package/objects/ReflectorForSSRPass.cjs +183 -180
  244. package/objects/ReflectorForSSRPass.cjs.map +1 -1
  245. package/objects/ReflectorForSSRPass.js +183 -180
  246. package/objects/ReflectorForSSRPass.js.map +1 -1
  247. package/objects/Refractor.cjs +164 -161
  248. package/objects/Refractor.cjs.map +1 -1
  249. package/objects/Refractor.js +164 -161
  250. package/objects/Refractor.js.map +1 -1
  251. package/objects/ShadowMesh.cjs +1 -1
  252. package/objects/ShadowMesh.cjs.map +1 -1
  253. package/objects/ShadowMesh.js +2 -2
  254. package/objects/ShadowMesh.js.map +1 -1
  255. package/objects/Sky.cjs +35 -32
  256. package/objects/Sky.cjs.map +1 -1
  257. package/objects/Sky.d.ts +100 -6
  258. package/objects/Sky.js +35 -32
  259. package/objects/Sky.js.map +1 -1
  260. package/objects/Water.cjs +2 -1
  261. package/objects/Water.cjs.map +1 -1
  262. package/objects/Water.js +3 -2
  263. package/objects/Water.js.map +1 -1
  264. package/objects/Water2.cjs +143 -140
  265. package/objects/Water2.cjs.map +1 -1
  266. package/objects/Water2.js +143 -140
  267. package/objects/Water2.js.map +1 -1
  268. package/package.json +1 -1
  269. package/postprocessing/Pass.cjs.map +1 -1
  270. package/postprocessing/Pass.d.ts +2 -2
  271. package/postprocessing/Pass.js.map +1 -1
  272. package/postprocessing/SAOPass.cjs +267 -264
  273. package/postprocessing/SAOPass.cjs.map +1 -1
  274. package/postprocessing/SAOPass.js +267 -264
  275. package/postprocessing/SAOPass.js.map +1 -1
  276. package/postprocessing/SSAOPass.cjs +253 -250
  277. package/postprocessing/SSAOPass.cjs.map +1 -1
  278. package/postprocessing/SSAOPass.js +253 -250
  279. package/postprocessing/SSAOPass.js.map +1 -1
  280. package/postprocessing/SSRPass.cjs +379 -376
  281. package/postprocessing/SSRPass.cjs.map +1 -1
  282. package/postprocessing/SSRPass.js +379 -376
  283. package/postprocessing/SSRPass.js.map +1 -1
  284. package/postprocessing/UnrealBloomPass.cjs +205 -202
  285. package/postprocessing/UnrealBloomPass.cjs.map +1 -1
  286. package/postprocessing/UnrealBloomPass.js +205 -202
  287. package/postprocessing/UnrealBloomPass.js.map +1 -1
  288. package/renderers/CSS2DRenderer.cjs +5 -5
  289. package/renderers/CSS2DRenderer.cjs.map +1 -1
  290. package/renderers/CSS2DRenderer.js +5 -5
  291. package/renderers/CSS2DRenderer.js.map +1 -1
  292. package/renderers/CSS3DRenderer.cjs +5 -5
  293. package/renderers/CSS3DRenderer.cjs.map +1 -1
  294. package/renderers/CSS3DRenderer.js +6 -6
  295. package/renderers/CSS3DRenderer.js.map +1 -1
  296. package/shaders/ACESFilmicToneMappingShader.cjs +71 -46
  297. package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
  298. package/shaders/ACESFilmicToneMappingShader.js +71 -46
  299. package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
  300. package/shaders/AfterimageShader.cjs +41 -22
  301. package/shaders/AfterimageShader.cjs.map +1 -1
  302. package/shaders/AfterimageShader.js +41 -22
  303. package/shaders/AfterimageShader.js.map +1 -1
  304. package/shaders/BasicShader.cjs +20 -6
  305. package/shaders/BasicShader.cjs.map +1 -1
  306. package/shaders/BasicShader.js +20 -6
  307. package/shaders/BasicShader.js.map +1 -1
  308. package/shaders/BleachBypassShader.cjs +46 -26
  309. package/shaders/BleachBypassShader.cjs.map +1 -1
  310. package/shaders/BleachBypassShader.js +46 -26
  311. package/shaders/BleachBypassShader.js.map +1 -1
  312. package/shaders/BlendShader.cjs +33 -19
  313. package/shaders/BlendShader.cjs.map +1 -1
  314. package/shaders/BlendShader.js +33 -19
  315. package/shaders/BlendShader.js.map +1 -1
  316. package/shaders/BokehShader.cjs +117 -90
  317. package/shaders/BokehShader.cjs.map +1 -1
  318. package/shaders/BokehShader.js +117 -90
  319. package/shaders/BokehShader.js.map +1 -1
  320. package/shaders/BokehShader2.cjs +333 -232
  321. package/shaders/BokehShader2.cjs.map +1 -1
  322. package/shaders/BokehShader2.js +333 -232
  323. package/shaders/BokehShader2.js.map +1 -1
  324. package/shaders/BrightnessContrastShader.cjs +38 -22
  325. package/shaders/BrightnessContrastShader.cjs.map +1 -1
  326. package/shaders/BrightnessContrastShader.js +38 -22
  327. package/shaders/BrightnessContrastShader.js.map +1 -1
  328. package/shaders/ColorCorrectionShader.cjs +35 -21
  329. package/shaders/ColorCorrectionShader.cjs.map +1 -1
  330. package/shaders/ColorCorrectionShader.js +35 -21
  331. package/shaders/ColorCorrectionShader.js.map +1 -1
  332. package/shaders/ColorifyShader.cjs +34 -19
  333. package/shaders/ColorifyShader.cjs.map +1 -1
  334. package/shaders/ColorifyShader.js +34 -19
  335. package/shaders/ColorifyShader.js.map +1 -1
  336. package/shaders/ConvolutionShader.cjs +43 -24
  337. package/shaders/ConvolutionShader.cjs.map +1 -1
  338. package/shaders/ConvolutionShader.js +43 -24
  339. package/shaders/ConvolutionShader.js.map +1 -1
  340. package/shaders/CopyShader.cjs +30 -16
  341. package/shaders/CopyShader.cjs.map +1 -1
  342. package/shaders/CopyShader.js +30 -16
  343. package/shaders/CopyShader.js.map +1 -1
  344. package/shaders/DOFMipMapShader.cjs +38 -21
  345. package/shaders/DOFMipMapShader.cjs.map +1 -1
  346. package/shaders/DOFMipMapShader.js +38 -21
  347. package/shaders/DOFMipMapShader.js.map +1 -1
  348. package/shaders/DepthLimitedBlurShader.cjs +98 -69
  349. package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
  350. package/shaders/DepthLimitedBlurShader.js +98 -69
  351. package/shaders/DepthLimitedBlurShader.js.map +1 -1
  352. package/shaders/DigitalGlitch.cjs +70 -59
  353. package/shaders/DigitalGlitch.cjs.map +1 -1
  354. package/shaders/DigitalGlitch.js +70 -59
  355. package/shaders/DigitalGlitch.js.map +1 -1
  356. package/shaders/DotScreenShader.cjs +49 -28
  357. package/shaders/DotScreenShader.cjs.map +1 -1
  358. package/shaders/DotScreenShader.js +49 -28
  359. package/shaders/DotScreenShader.js.map +1 -1
  360. package/shaders/FXAAShader.cjs +1098 -1089
  361. package/shaders/FXAAShader.cjs.map +1 -1
  362. package/shaders/FXAAShader.js +1098 -1089
  363. package/shaders/FXAAShader.js.map +1 -1
  364. package/shaders/FilmShader.cjs +57 -29
  365. package/shaders/FilmShader.cjs.map +1 -1
  366. package/shaders/FilmShader.js +57 -29
  367. package/shaders/FilmShader.js.map +1 -1
  368. package/shaders/FocusShader.cjs +70 -43
  369. package/shaders/FocusShader.cjs.map +1 -1
  370. package/shaders/FocusShader.js +70 -43
  371. package/shaders/FocusShader.js.map +1 -1
  372. package/shaders/FreiChenShader.cjs +74 -53
  373. package/shaders/FreiChenShader.cjs.map +1 -1
  374. package/shaders/FreiChenShader.js +74 -53
  375. package/shaders/FreiChenShader.js.map +1 -1
  376. package/shaders/FresnelShader.cjs +55 -35
  377. package/shaders/FresnelShader.cjs.map +1 -1
  378. package/shaders/FresnelShader.js +55 -35
  379. package/shaders/FresnelShader.js.map +1 -1
  380. package/shaders/GammaCorrectionShader.cjs +33 -19
  381. package/shaders/GammaCorrectionShader.cjs.map +1 -1
  382. package/shaders/GammaCorrectionShader.js +33 -19
  383. package/shaders/GammaCorrectionShader.js.map +1 -1
  384. package/shaders/GodRaysShader.cjs +193 -116
  385. package/shaders/GodRaysShader.cjs.map +1 -1
  386. package/shaders/GodRaysShader.js +193 -116
  387. package/shaders/GodRaysShader.js.map +1 -1
  388. package/shaders/HalftoneShader.cjs +270 -192
  389. package/shaders/HalftoneShader.cjs.map +1 -1
  390. package/shaders/HalftoneShader.js +270 -192
  391. package/shaders/HalftoneShader.js.map +1 -1
  392. package/shaders/HorizontalTiltShiftShader.cjs +43 -27
  393. package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
  394. package/shaders/HorizontalTiltShiftShader.js +43 -27
  395. package/shaders/HorizontalTiltShiftShader.js.map +1 -1
  396. package/shaders/HueSaturationShader.cjs +47 -31
  397. package/shaders/HueSaturationShader.cjs.map +1 -1
  398. package/shaders/HueSaturationShader.js +47 -31
  399. package/shaders/HueSaturationShader.js.map +1 -1
  400. package/shaders/KaleidoShader.cjs +37 -24
  401. package/shaders/KaleidoShader.cjs.map +1 -1
  402. package/shaders/KaleidoShader.js +37 -24
  403. package/shaders/KaleidoShader.js.map +1 -1
  404. package/shaders/LuminosityHighPassShader.cjs +43 -24
  405. package/shaders/LuminosityHighPassShader.cjs.map +1 -1
  406. package/shaders/LuminosityHighPassShader.js +43 -24
  407. package/shaders/LuminosityHighPassShader.js.map +1 -1
  408. package/shaders/LuminosityShader.cjs +34 -17
  409. package/shaders/LuminosityShader.cjs.map +1 -1
  410. package/shaders/LuminosityShader.js +34 -17
  411. package/shaders/LuminosityShader.js.map +1 -1
  412. package/shaders/MirrorShader.cjs +39 -26
  413. package/shaders/MirrorShader.cjs.map +1 -1
  414. package/shaders/MirrorShader.js +39 -26
  415. package/shaders/MirrorShader.js.map +1 -1
  416. package/shaders/NormalMapShader.cjs +36 -21
  417. package/shaders/NormalMapShader.cjs.map +1 -1
  418. package/shaders/NormalMapShader.js +36 -21
  419. package/shaders/NormalMapShader.js.map +1 -1
  420. package/shaders/ParallaxShader.cjs +147 -97
  421. package/shaders/ParallaxShader.cjs.map +1 -1
  422. package/shaders/ParallaxShader.js +147 -97
  423. package/shaders/ParallaxShader.js.map +1 -1
  424. package/shaders/PixelShader.cjs +31 -18
  425. package/shaders/PixelShader.cjs.map +1 -1
  426. package/shaders/PixelShader.js +31 -18
  427. package/shaders/PixelShader.js.map +1 -1
  428. package/shaders/RGBShiftShader.cjs +33 -20
  429. package/shaders/RGBShiftShader.cjs.map +1 -1
  430. package/shaders/RGBShiftShader.js +33 -20
  431. package/shaders/RGBShiftShader.js.map +1 -1
  432. package/shaders/SAOShader.cjs +154 -117
  433. package/shaders/SAOShader.cjs.map +1 -1
  434. package/shaders/SAOShader.js +154 -117
  435. package/shaders/SAOShader.js.map +1 -1
  436. package/shaders/SMAAShader.cjs +358 -270
  437. package/shaders/SMAAShader.cjs.map +1 -1
  438. package/shaders/SMAAShader.js +358 -270
  439. package/shaders/SMAAShader.js.map +1 -1
  440. package/shaders/SSAOShader.cjs +236 -142
  441. package/shaders/SSAOShader.cjs.map +1 -1
  442. package/shaders/SSAOShader.js +236 -142
  443. package/shaders/SSAOShader.js.map +1 -1
  444. package/shaders/SSRShader.cjs +4 -4
  445. package/shaders/SSRShader.cjs.map +1 -1
  446. package/shaders/SSRShader.js +4 -4
  447. package/shaders/SSRShader.js.map +1 -1
  448. package/shaders/SepiaShader.cjs +36 -20
  449. package/shaders/SepiaShader.cjs.map +1 -1
  450. package/shaders/SepiaShader.js +36 -20
  451. package/shaders/SepiaShader.js.map +1 -1
  452. package/shaders/SobelOperatorShader.cjs +64 -37
  453. package/shaders/SobelOperatorShader.cjs.map +1 -1
  454. package/shaders/SobelOperatorShader.js +64 -37
  455. package/shaders/SobelOperatorShader.js.map +1 -1
  456. package/shaders/TechnicolorShader.cjs +29 -16
  457. package/shaders/TechnicolorShader.cjs.map +1 -1
  458. package/shaders/TechnicolorShader.js +29 -16
  459. package/shaders/TechnicolorShader.js.map +1 -1
  460. package/shaders/ToneMapShader.cjs +55 -35
  461. package/shaders/ToneMapShader.cjs.map +1 -1
  462. package/shaders/ToneMapShader.js +55 -35
  463. package/shaders/ToneMapShader.js.map +1 -1
  464. package/shaders/ToonShader.cjs +275 -165
  465. package/shaders/ToonShader.cjs.map +1 -1
  466. package/shaders/ToonShader.js +275 -165
  467. package/shaders/ToonShader.js.map +1 -1
  468. package/shaders/TriangleBlurShader.cjs +50 -27
  469. package/shaders/TriangleBlurShader.cjs.map +1 -1
  470. package/shaders/TriangleBlurShader.js +50 -27
  471. package/shaders/TriangleBlurShader.js.map +1 -1
  472. package/shaders/UnpackDepthRGBAShader.cjs +32 -17
  473. package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
  474. package/shaders/UnpackDepthRGBAShader.js +32 -17
  475. package/shaders/UnpackDepthRGBAShader.js.map +1 -1
  476. package/shaders/VerticalTiltShiftShader.cjs +43 -27
  477. package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
  478. package/shaders/VerticalTiltShiftShader.js +43 -27
  479. package/shaders/VerticalTiltShiftShader.js.map +1 -1
  480. package/shaders/VignetteShader.cjs +43 -27
  481. package/shaders/VignetteShader.cjs.map +1 -1
  482. package/shaders/VignetteShader.js +43 -27
  483. package/shaders/VignetteShader.js.map +1 -1
  484. package/shaders/VolumeShader.cjs +264 -213
  485. package/shaders/VolumeShader.cjs.map +1 -1
  486. package/shaders/VolumeShader.js +264 -213
  487. package/shaders/VolumeShader.js.map +1 -1
  488. package/shaders/WaterRefractionShader.cjs +63 -35
  489. package/shaders/WaterRefractionShader.cjs.map +1 -1
  490. package/shaders/WaterRefractionShader.js +63 -35
  491. package/shaders/WaterRefractionShader.js.map +1 -1
  492. package/utils/GeometryCompressionUtils.cjs +2 -1
  493. package/utils/GeometryCompressionUtils.cjs.map +1 -1
  494. package/utils/GeometryCompressionUtils.js +3 -2
  495. package/utils/GeometryCompressionUtils.js.map +1 -1
  496. package/utils/RoughnessMipmapper.cjs +3 -3
  497. package/utils/RoughnessMipmapper.cjs.map +1 -1
  498. package/utils/RoughnessMipmapper.js +4 -4
  499. package/utils/RoughnessMipmapper.js.map +1 -1
  500. package/utils/ShadowMapViewer.d.ts +2 -2
  501. package/webxr/ARButton.cjs +109 -106
  502. package/webxr/ARButton.cjs.map +1 -1
  503. package/webxr/ARButton.d.ts +4 -3
  504. package/webxr/ARButton.js +109 -106
  505. package/webxr/ARButton.js.map +1 -1
  506. package/webxr/OculusHandPointerModel.cjs +2 -2
  507. package/webxr/OculusHandPointerModel.cjs.map +1 -1
  508. package/webxr/OculusHandPointerModel.js +2 -2
  509. package/webxr/OculusHandPointerModel.js.map +1 -1
  510. package/webxr/VRButton.cjs +98 -95
  511. package/webxr/VRButton.cjs.map +1 -1
  512. package/webxr/VRButton.d.ts +6 -5
  513. package/webxr/VRButton.js +98 -95
  514. package/webxr/VRButton.js.map +1 -1
  515. package/webxr/XRHandPrimitiveModel.cjs +2 -2
  516. package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
  517. package/webxr/XRHandPrimitiveModel.js +3 -3
  518. package/webxr/XRHandPrimitiveModel.js.map +1 -1
@@ -6,107 +6,110 @@ var __publicField = (obj, key, value) => {
6
6
  return value;
7
7
  };
8
8
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
- const _VRButton = class {
10
- static createButton(renderer, sessionInit = {}) {
11
- const button = document.createElement("button");
12
- function showEnterVR() {
13
- let currentSession = null;
14
- async function onSessionStarted(session) {
15
- session.addEventListener("end", onSessionEnded);
16
- await renderer.xr.setSession(session);
17
- button.textContent = "EXIT VR";
18
- currentSession = session;
19
- }
20
- function onSessionEnded() {
21
- currentSession.removeEventListener("end", onSessionEnded);
9
+ const VRButton = /* @__PURE__ */ (() => {
10
+ const _VRButton2 = class {
11
+ static createButton(renderer, sessionInit = {}) {
12
+ const button = document.createElement("button");
13
+ function showEnterVR() {
14
+ let currentSession = null;
15
+ async function onSessionStarted(session) {
16
+ session.addEventListener("end", onSessionEnded);
17
+ await renderer.xr.setSession(session);
18
+ button.textContent = "EXIT VR";
19
+ currentSession = session;
20
+ }
21
+ function onSessionEnded() {
22
+ currentSession.removeEventListener("end", onSessionEnded);
23
+ button.textContent = "ENTER VR";
24
+ currentSession = null;
25
+ }
26
+ button.style.display = "";
27
+ button.style.cursor = "pointer";
28
+ button.style.left = "calc(50% - 50px)";
29
+ button.style.width = "100px";
22
30
  button.textContent = "ENTER VR";
23
- currentSession = null;
31
+ button.onmouseenter = () => {
32
+ button.style.opacity = "1.0";
33
+ };
34
+ button.onmouseleave = () => {
35
+ button.style.opacity = "0.5";
36
+ };
37
+ button.onclick = () => {
38
+ var _a;
39
+ if (currentSession === null) {
40
+ const optionalFeatures = [sessionInit.optionalFeatures, "local-floor", "bounded-floor", "hand-tracking"].flat().filter(Boolean);
41
+ (_a = navigator.xr) == null ? void 0 : _a.requestSession("immersive-vr", { ...sessionInit, optionalFeatures }).then(onSessionStarted);
42
+ } else {
43
+ currentSession.end();
44
+ }
45
+ };
46
+ }
47
+ function disableButton() {
48
+ button.style.display = "";
49
+ button.style.cursor = "auto";
50
+ button.style.left = "calc(50% - 75px)";
51
+ button.style.width = "150px";
52
+ button.onmouseenter = null;
53
+ button.onmouseleave = null;
54
+ button.onclick = null;
24
55
  }
25
- button.style.display = "";
26
- button.style.cursor = "pointer";
27
- button.style.left = "calc(50% - 50px)";
28
- button.style.width = "100px";
29
- button.textContent = "ENTER VR";
30
- button.onmouseenter = () => {
31
- button.style.opacity = "1.0";
32
- };
33
- button.onmouseleave = () => {
34
- button.style.opacity = "0.5";
35
- };
36
- button.onclick = () => {
37
- var _a;
38
- if (currentSession === null) {
39
- const optionalFeatures = [sessionInit.optionalFeatures, "local-floor", "bounded-floor", "hand-tracking"].flat().filter(Boolean);
40
- (_a = navigator.xr) == null ? void 0 : _a.requestSession("immersive-vr", { ...sessionInit, optionalFeatures }).then(onSessionStarted);
56
+ function showWebXRNotFound() {
57
+ disableButton();
58
+ button.textContent = "VR NOT SUPPORTED";
59
+ }
60
+ function stylizeElement(element) {
61
+ element.style.position = "absolute";
62
+ element.style.bottom = "20px";
63
+ element.style.padding = "12px 6px";
64
+ element.style.border = "1px solid #fff";
65
+ element.style.borderRadius = "4px";
66
+ element.style.background = "rgba(0,0,0,0.1)";
67
+ element.style.color = "#fff";
68
+ element.style.font = "normal 13px sans-serif";
69
+ element.style.textAlign = "center";
70
+ element.style.opacity = "0.5";
71
+ element.style.outline = "none";
72
+ element.style.zIndex = "999";
73
+ }
74
+ if ("xr" in navigator) {
75
+ stylizeElement(button);
76
+ button.id = "VRButton";
77
+ button.style.display = "none";
78
+ navigator.xr.isSessionSupported("immersive-vr").then((supported) => {
79
+ supported ? showEnterVR() : showWebXRNotFound();
80
+ if (supported && _VRButton2.xrSessionIsGranted) {
81
+ button.click();
82
+ }
83
+ });
84
+ return button;
85
+ } else {
86
+ const message = document.createElement("a");
87
+ if (window.isSecureContext === false) {
88
+ message.href = document.location.href.replace(/^http:/, "https:");
89
+ message.innerHTML = "WEBXR NEEDS HTTPS";
41
90
  } else {
42
- currentSession.end();
91
+ message.href = "https://immersiveweb.dev/";
92
+ message.innerHTML = "WEBXR NOT AVAILABLE";
43
93
  }
44
- };
45
- }
46
- function disableButton() {
47
- button.style.display = "";
48
- button.style.cursor = "auto";
49
- button.style.left = "calc(50% - 75px)";
50
- button.style.width = "150px";
51
- button.onmouseenter = null;
52
- button.onmouseleave = null;
53
- button.onclick = null;
54
- }
55
- function showWebXRNotFound() {
56
- disableButton();
57
- button.textContent = "VR NOT SUPPORTED";
58
- }
59
- function stylizeElement(element) {
60
- element.style.position = "absolute";
61
- element.style.bottom = "20px";
62
- element.style.padding = "12px 6px";
63
- element.style.border = "1px solid #fff";
64
- element.style.borderRadius = "4px";
65
- element.style.background = "rgba(0,0,0,0.1)";
66
- element.style.color = "#fff";
67
- element.style.font = "normal 13px sans-serif";
68
- element.style.textAlign = "center";
69
- element.style.opacity = "0.5";
70
- element.style.outline = "none";
71
- element.style.zIndex = "999";
72
- }
73
- if ("xr" in navigator) {
74
- stylizeElement(button);
75
- button.id = "VRButton";
76
- button.style.display = "none";
77
- navigator.xr.isSessionSupported("immersive-vr").then((supported) => {
78
- supported ? showEnterVR() : showWebXRNotFound();
79
- if (supported && _VRButton.xrSessionIsGranted) {
80
- button.click();
81
- }
82
- });
83
- return button;
84
- } else {
85
- const message = document.createElement("a");
86
- if (window.isSecureContext === false) {
87
- message.href = document.location.href.replace(/^http:/, "https:");
88
- message.innerHTML = "WEBXR NEEDS HTTPS";
89
- } else {
90
- message.href = "https://immersiveweb.dev/";
91
- message.innerHTML = "WEBXR NOT AVAILABLE";
94
+ message.style.left = "calc(50% - 90px)";
95
+ message.style.width = "180px";
96
+ message.style.textDecoration = "none";
97
+ stylizeElement(message);
98
+ return message;
92
99
  }
93
- message.style.left = "calc(50% - 90px)";
94
- message.style.width = "180px";
95
- message.style.textDecoration = "none";
96
- stylizeElement(message);
97
- return message;
98
100
  }
99
- }
100
- static registerSessionGrantedListener() {
101
- if (typeof navigator !== "undefined" && "xr" in navigator) {
102
- navigator.xr.addEventListener("sessiongranted", () => {
103
- _VRButton.xrSessionIsGranted = true;
104
- });
101
+ static registerSessionGrantedListener() {
102
+ if (typeof navigator !== "undefined" && "xr" in navigator) {
103
+ navigator.xr.addEventListener("sessiongranted", () => {
104
+ _VRButton2.xrSessionIsGranted = true;
105
+ });
106
+ }
105
107
  }
106
- }
107
- };
108
- let VRButton = _VRButton;
109
- __publicField(VRButton, "xrSessionIsGranted", false);
110
- VRButton.registerSessionGrantedListener();
108
+ };
109
+ let VRButton2 = _VRButton2;
110
+ __publicField(VRButton2, "xrSessionIsGranted", false);
111
+ VRButton2.registerSessionGrantedListener();
112
+ return VRButton2;
113
+ })();
111
114
  exports.VRButton = VRButton;
112
115
  //# sourceMappingURL=VRButton.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"VRButton.cjs","sources":["../../src/webxr/VRButton.ts"],"sourcesContent":["import { WebGLRenderer } from 'three'\n\nclass VRButton {\n static createButton(renderer: WebGLRenderer, sessionInit: XRSessionInit = {}): HTMLButtonElement | HTMLAnchorElement {\n const button = document.createElement('button')\n\n function showEnterVR(/*device*/): void {\n let currentSession: XRSession | null = null\n\n async function onSessionStarted(session: XRSession): Promise<void> {\n session.addEventListener('end', onSessionEnded)\n\n await renderer.xr.setSession(session as any)\n button.textContent = 'EXIT VR'\n\n currentSession = session\n }\n\n function onSessionEnded(/*event*/): void {\n currentSession!.removeEventListener('end', onSessionEnded)\n\n button.textContent = 'ENTER VR'\n\n currentSession = null\n }\n\n //\n\n button.style.display = ''\n\n button.style.cursor = 'pointer'\n button.style.left = 'calc(50% - 50px)'\n button.style.width = '100px'\n\n button.textContent = 'ENTER VR'\n\n button.onmouseenter = (): void => {\n button.style.opacity = '1.0'\n }\n\n button.onmouseleave = (): void => {\n button.style.opacity = '0.5'\n }\n\n button.onclick = (): void => {\n if (currentSession === null) {\n // WebXR's requestReferenceSpace only works if the corresponding feature\n // was requested at session creation time. For simplicity, just ask for\n // the interesting ones as optional features, but be aware that the\n // requestReferenceSpace call will fail if it turns out to be unavailable.\n // ('local' is always available for immersive sessions and doesn't need to\n // be requested separately.)\n\n const optionalFeatures = [sessionInit.optionalFeatures, 'local-floor', 'bounded-floor', 'hand-tracking']\n .flat()\n .filter(Boolean) as string[]\n\n ;(navigator as Navigator).xr\n ?.requestSession('immersive-vr', { ...sessionInit, optionalFeatures })\n .then(onSessionStarted)\n } else {\n currentSession.end()\n }\n }\n }\n\n function disableButton(): void {\n button.style.display = ''\n\n button.style.cursor = 'auto'\n button.style.left = 'calc(50% - 75px)'\n button.style.width = '150px'\n\n button.onmouseenter = null\n button.onmouseleave = null\n\n button.onclick = null\n }\n\n function showWebXRNotFound(): void {\n disableButton()\n\n button.textContent = 'VR NOT SUPPORTED'\n }\n\n function stylizeElement(element: HTMLElement): void {\n element.style.position = 'absolute'\n element.style.bottom = '20px'\n element.style.padding = '12px 6px'\n element.style.border = '1px solid #fff'\n element.style.borderRadius = '4px'\n element.style.background = 'rgba(0,0,0,0.1)'\n element.style.color = '#fff'\n element.style.font = 'normal 13px sans-serif'\n element.style.textAlign = 'center'\n element.style.opacity = '0.5'\n element.style.outline = 'none'\n element.style.zIndex = '999'\n }\n\n if ('xr' in navigator) {\n stylizeElement(button)\n button.id = 'VRButton'\n button.style.display = 'none'\n\n // Query for session mode\n navigator.xr!.isSessionSupported('immersive-vr').then((supported) => {\n supported ? showEnterVR() : showWebXRNotFound()\n\n if (supported && VRButton.xrSessionIsGranted) {\n button.click()\n }\n })\n\n return button\n } else {\n const message = document.createElement('a')\n\n if (window.isSecureContext === false) {\n message.href = document.location.href.replace(/^http:/, 'https:')\n message.innerHTML = 'WEBXR NEEDS HTTPS' // TODO Improve message\n } else {\n message.href = 'https://immersiveweb.dev/'\n message.innerHTML = 'WEBXR NOT AVAILABLE'\n }\n\n message.style.left = 'calc(50% - 90px)'\n message.style.width = '180px'\n message.style.textDecoration = 'none'\n\n stylizeElement(message)\n\n return message\n }\n }\n\n static xrSessionIsGranted = false\n\n static registerSessionGrantedListener(): void {\n if (typeof navigator !== 'undefined' && 'xr' in navigator) {\n ;(navigator as Navigator).xr!.addEventListener('sessiongranted', () => {\n VRButton.xrSessionIsGranted = true\n })\n }\n }\n}\n\nVRButton.registerSessionGrantedListener()\n\nexport { VRButton }\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VRButton.cjs","sources":["../../src/webxr/VRButton.ts"],"sourcesContent":["import { WebGLRenderer } from 'three'\n\nconst VRButton = /* @__PURE__ */ (() => {\n class VRButton {\n static createButton(\n renderer: WebGLRenderer,\n sessionInit: XRSessionInit = {},\n ): HTMLButtonElement | HTMLAnchorElement {\n const button = document.createElement('button')\n\n function showEnterVR(/*device*/): void {\n let currentSession: XRSession | null = null\n\n async function onSessionStarted(session: XRSession): Promise<void> {\n session.addEventListener('end', onSessionEnded)\n\n await renderer.xr.setSession(session as any)\n button.textContent = 'EXIT VR'\n\n currentSession = session\n }\n\n function onSessionEnded(/*event*/): void {\n currentSession!.removeEventListener('end', onSessionEnded)\n\n button.textContent = 'ENTER VR'\n\n currentSession = null\n }\n\n //\n\n button.style.display = ''\n\n button.style.cursor = 'pointer'\n button.style.left = 'calc(50% - 50px)'\n button.style.width = '100px'\n\n button.textContent = 'ENTER VR'\n\n button.onmouseenter = (): void => {\n button.style.opacity = '1.0'\n }\n\n button.onmouseleave = (): void => {\n button.style.opacity = '0.5'\n }\n\n button.onclick = (): void => {\n if (currentSession === null) {\n // WebXR's requestReferenceSpace only works if the corresponding feature\n // was requested at session creation time. For simplicity, just ask for\n // the interesting ones as optional features, but be aware that the\n // requestReferenceSpace call will fail if it turns out to be unavailable.\n // ('local' is always available for immersive sessions and doesn't need to\n // be requested separately.)\n\n const optionalFeatures = [sessionInit.optionalFeatures, 'local-floor', 'bounded-floor', 'hand-tracking']\n .flat()\n .filter(Boolean) as string[]\n\n ;(navigator as Navigator).xr\n ?.requestSession('immersive-vr', { ...sessionInit, optionalFeatures })\n .then(onSessionStarted)\n } else {\n currentSession.end()\n }\n }\n }\n\n function disableButton(): void {\n button.style.display = ''\n\n button.style.cursor = 'auto'\n button.style.left = 'calc(50% - 75px)'\n button.style.width = '150px'\n\n button.onmouseenter = null\n button.onmouseleave = null\n\n button.onclick = null\n }\n\n function showWebXRNotFound(): void {\n disableButton()\n\n button.textContent = 'VR NOT SUPPORTED'\n }\n\n function stylizeElement(element: HTMLElement): void {\n element.style.position = 'absolute'\n element.style.bottom = '20px'\n element.style.padding = '12px 6px'\n element.style.border = '1px solid #fff'\n element.style.borderRadius = '4px'\n element.style.background = 'rgba(0,0,0,0.1)'\n element.style.color = '#fff'\n element.style.font = 'normal 13px sans-serif'\n element.style.textAlign = 'center'\n element.style.opacity = '0.5'\n element.style.outline = 'none'\n element.style.zIndex = '999'\n }\n\n if ('xr' in navigator) {\n stylizeElement(button)\n button.id = 'VRButton'\n button.style.display = 'none'\n\n // Query for session mode\n navigator.xr!.isSessionSupported('immersive-vr').then((supported) => {\n supported ? showEnterVR() : showWebXRNotFound()\n\n if (supported && VRButton.xrSessionIsGranted) {\n button.click()\n }\n })\n\n return button\n } else {\n const message = document.createElement('a')\n\n if (window.isSecureContext === false) {\n message.href = document.location.href.replace(/^http:/, 'https:')\n message.innerHTML = 'WEBXR NEEDS HTTPS' // TODO Improve message\n } else {\n message.href = 'https://immersiveweb.dev/'\n message.innerHTML = 'WEBXR NOT AVAILABLE'\n }\n\n message.style.left = 'calc(50% - 90px)'\n message.style.width = '180px'\n message.style.textDecoration = 'none'\n\n stylizeElement(message)\n\n return message\n }\n }\n\n static xrSessionIsGranted = false\n\n static registerSessionGrantedListener(): void {\n if (typeof navigator !== 'undefined' && 'xr' in navigator) {\n ;(navigator as Navigator).xr!.addEventListener('sessiongranted', () => {\n VRButton.xrSessionIsGranted = true\n })\n }\n }\n }\n\n VRButton.registerSessionGrantedListener()\n\n return VRButton\n})()\n\nexport { VRButton }\n"],"names":["VRButton"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /// <reference types="webxr" />
2
2
  import { WebGLRenderer } from 'three';
3
- declare class VRButton {
4
- static createButton(renderer: WebGLRenderer, sessionInit?: XRSessionInit): HTMLButtonElement | HTMLAnchorElement;
5
- static xrSessionIsGranted: boolean;
6
- static registerSessionGrantedListener(): void;
7
- }
3
+ declare const VRButton: {
4
+ new (): {};
5
+ createButton(renderer: WebGLRenderer, sessionInit?: XRSessionInit): HTMLButtonElement | HTMLAnchorElement;
6
+ xrSessionIsGranted: boolean;
7
+ registerSessionGrantedListener(): void;
8
+ };
8
9
  export { VRButton };
package/webxr/VRButton.js CHANGED
@@ -4,108 +4,111 @@ var __publicField = (obj, key, value) => {
4
4
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
  return value;
6
6
  };
7
- const _VRButton = class {
8
- static createButton(renderer, sessionInit = {}) {
9
- const button = document.createElement("button");
10
- function showEnterVR() {
11
- let currentSession = null;
12
- async function onSessionStarted(session) {
13
- session.addEventListener("end", onSessionEnded);
14
- await renderer.xr.setSession(session);
15
- button.textContent = "EXIT VR";
16
- currentSession = session;
17
- }
18
- function onSessionEnded() {
19
- currentSession.removeEventListener("end", onSessionEnded);
7
+ const VRButton = /* @__PURE__ */ (() => {
8
+ const _VRButton2 = class {
9
+ static createButton(renderer, sessionInit = {}) {
10
+ const button = document.createElement("button");
11
+ function showEnterVR() {
12
+ let currentSession = null;
13
+ async function onSessionStarted(session) {
14
+ session.addEventListener("end", onSessionEnded);
15
+ await renderer.xr.setSession(session);
16
+ button.textContent = "EXIT VR";
17
+ currentSession = session;
18
+ }
19
+ function onSessionEnded() {
20
+ currentSession.removeEventListener("end", onSessionEnded);
21
+ button.textContent = "ENTER VR";
22
+ currentSession = null;
23
+ }
24
+ button.style.display = "";
25
+ button.style.cursor = "pointer";
26
+ button.style.left = "calc(50% - 50px)";
27
+ button.style.width = "100px";
20
28
  button.textContent = "ENTER VR";
21
- currentSession = null;
29
+ button.onmouseenter = () => {
30
+ button.style.opacity = "1.0";
31
+ };
32
+ button.onmouseleave = () => {
33
+ button.style.opacity = "0.5";
34
+ };
35
+ button.onclick = () => {
36
+ var _a;
37
+ if (currentSession === null) {
38
+ const optionalFeatures = [sessionInit.optionalFeatures, "local-floor", "bounded-floor", "hand-tracking"].flat().filter(Boolean);
39
+ (_a = navigator.xr) == null ? void 0 : _a.requestSession("immersive-vr", { ...sessionInit, optionalFeatures }).then(onSessionStarted);
40
+ } else {
41
+ currentSession.end();
42
+ }
43
+ };
44
+ }
45
+ function disableButton() {
46
+ button.style.display = "";
47
+ button.style.cursor = "auto";
48
+ button.style.left = "calc(50% - 75px)";
49
+ button.style.width = "150px";
50
+ button.onmouseenter = null;
51
+ button.onmouseleave = null;
52
+ button.onclick = null;
22
53
  }
23
- button.style.display = "";
24
- button.style.cursor = "pointer";
25
- button.style.left = "calc(50% - 50px)";
26
- button.style.width = "100px";
27
- button.textContent = "ENTER VR";
28
- button.onmouseenter = () => {
29
- button.style.opacity = "1.0";
30
- };
31
- button.onmouseleave = () => {
32
- button.style.opacity = "0.5";
33
- };
34
- button.onclick = () => {
35
- var _a;
36
- if (currentSession === null) {
37
- const optionalFeatures = [sessionInit.optionalFeatures, "local-floor", "bounded-floor", "hand-tracking"].flat().filter(Boolean);
38
- (_a = navigator.xr) == null ? void 0 : _a.requestSession("immersive-vr", { ...sessionInit, optionalFeatures }).then(onSessionStarted);
54
+ function showWebXRNotFound() {
55
+ disableButton();
56
+ button.textContent = "VR NOT SUPPORTED";
57
+ }
58
+ function stylizeElement(element) {
59
+ element.style.position = "absolute";
60
+ element.style.bottom = "20px";
61
+ element.style.padding = "12px 6px";
62
+ element.style.border = "1px solid #fff";
63
+ element.style.borderRadius = "4px";
64
+ element.style.background = "rgba(0,0,0,0.1)";
65
+ element.style.color = "#fff";
66
+ element.style.font = "normal 13px sans-serif";
67
+ element.style.textAlign = "center";
68
+ element.style.opacity = "0.5";
69
+ element.style.outline = "none";
70
+ element.style.zIndex = "999";
71
+ }
72
+ if ("xr" in navigator) {
73
+ stylizeElement(button);
74
+ button.id = "VRButton";
75
+ button.style.display = "none";
76
+ navigator.xr.isSessionSupported("immersive-vr").then((supported) => {
77
+ supported ? showEnterVR() : showWebXRNotFound();
78
+ if (supported && _VRButton2.xrSessionIsGranted) {
79
+ button.click();
80
+ }
81
+ });
82
+ return button;
83
+ } else {
84
+ const message = document.createElement("a");
85
+ if (window.isSecureContext === false) {
86
+ message.href = document.location.href.replace(/^http:/, "https:");
87
+ message.innerHTML = "WEBXR NEEDS HTTPS";
39
88
  } else {
40
- currentSession.end();
89
+ message.href = "https://immersiveweb.dev/";
90
+ message.innerHTML = "WEBXR NOT AVAILABLE";
41
91
  }
42
- };
43
- }
44
- function disableButton() {
45
- button.style.display = "";
46
- button.style.cursor = "auto";
47
- button.style.left = "calc(50% - 75px)";
48
- button.style.width = "150px";
49
- button.onmouseenter = null;
50
- button.onmouseleave = null;
51
- button.onclick = null;
52
- }
53
- function showWebXRNotFound() {
54
- disableButton();
55
- button.textContent = "VR NOT SUPPORTED";
56
- }
57
- function stylizeElement(element) {
58
- element.style.position = "absolute";
59
- element.style.bottom = "20px";
60
- element.style.padding = "12px 6px";
61
- element.style.border = "1px solid #fff";
62
- element.style.borderRadius = "4px";
63
- element.style.background = "rgba(0,0,0,0.1)";
64
- element.style.color = "#fff";
65
- element.style.font = "normal 13px sans-serif";
66
- element.style.textAlign = "center";
67
- element.style.opacity = "0.5";
68
- element.style.outline = "none";
69
- element.style.zIndex = "999";
70
- }
71
- if ("xr" in navigator) {
72
- stylizeElement(button);
73
- button.id = "VRButton";
74
- button.style.display = "none";
75
- navigator.xr.isSessionSupported("immersive-vr").then((supported) => {
76
- supported ? showEnterVR() : showWebXRNotFound();
77
- if (supported && _VRButton.xrSessionIsGranted) {
78
- button.click();
79
- }
80
- });
81
- return button;
82
- } else {
83
- const message = document.createElement("a");
84
- if (window.isSecureContext === false) {
85
- message.href = document.location.href.replace(/^http:/, "https:");
86
- message.innerHTML = "WEBXR NEEDS HTTPS";
87
- } else {
88
- message.href = "https://immersiveweb.dev/";
89
- message.innerHTML = "WEBXR NOT AVAILABLE";
92
+ message.style.left = "calc(50% - 90px)";
93
+ message.style.width = "180px";
94
+ message.style.textDecoration = "none";
95
+ stylizeElement(message);
96
+ return message;
90
97
  }
91
- message.style.left = "calc(50% - 90px)";
92
- message.style.width = "180px";
93
- message.style.textDecoration = "none";
94
- stylizeElement(message);
95
- return message;
96
98
  }
97
- }
98
- static registerSessionGrantedListener() {
99
- if (typeof navigator !== "undefined" && "xr" in navigator) {
100
- navigator.xr.addEventListener("sessiongranted", () => {
101
- _VRButton.xrSessionIsGranted = true;
102
- });
99
+ static registerSessionGrantedListener() {
100
+ if (typeof navigator !== "undefined" && "xr" in navigator) {
101
+ navigator.xr.addEventListener("sessiongranted", () => {
102
+ _VRButton2.xrSessionIsGranted = true;
103
+ });
104
+ }
103
105
  }
104
- }
105
- };
106
- let VRButton = _VRButton;
107
- __publicField(VRButton, "xrSessionIsGranted", false);
108
- VRButton.registerSessionGrantedListener();
106
+ };
107
+ let VRButton2 = _VRButton2;
108
+ __publicField(VRButton2, "xrSessionIsGranted", false);
109
+ VRButton2.registerSessionGrantedListener();
110
+ return VRButton2;
111
+ })();
109
112
  export {
110
113
  VRButton
111
114
  };
@@ -1 +1 @@
1
- {"version":3,"file":"VRButton.js","sources":["../../src/webxr/VRButton.ts"],"sourcesContent":["import { WebGLRenderer } from 'three'\n\nclass VRButton {\n static createButton(renderer: WebGLRenderer, sessionInit: XRSessionInit = {}): HTMLButtonElement | HTMLAnchorElement {\n const button = document.createElement('button')\n\n function showEnterVR(/*device*/): void {\n let currentSession: XRSession | null = null\n\n async function onSessionStarted(session: XRSession): Promise<void> {\n session.addEventListener('end', onSessionEnded)\n\n await renderer.xr.setSession(session as any)\n button.textContent = 'EXIT VR'\n\n currentSession = session\n }\n\n function onSessionEnded(/*event*/): void {\n currentSession!.removeEventListener('end', onSessionEnded)\n\n button.textContent = 'ENTER VR'\n\n currentSession = null\n }\n\n //\n\n button.style.display = ''\n\n button.style.cursor = 'pointer'\n button.style.left = 'calc(50% - 50px)'\n button.style.width = '100px'\n\n button.textContent = 'ENTER VR'\n\n button.onmouseenter = (): void => {\n button.style.opacity = '1.0'\n }\n\n button.onmouseleave = (): void => {\n button.style.opacity = '0.5'\n }\n\n button.onclick = (): void => {\n if (currentSession === null) {\n // WebXR's requestReferenceSpace only works if the corresponding feature\n // was requested at session creation time. For simplicity, just ask for\n // the interesting ones as optional features, but be aware that the\n // requestReferenceSpace call will fail if it turns out to be unavailable.\n // ('local' is always available for immersive sessions and doesn't need to\n // be requested separately.)\n\n const optionalFeatures = [sessionInit.optionalFeatures, 'local-floor', 'bounded-floor', 'hand-tracking']\n .flat()\n .filter(Boolean) as string[]\n\n ;(navigator as Navigator).xr\n ?.requestSession('immersive-vr', { ...sessionInit, optionalFeatures })\n .then(onSessionStarted)\n } else {\n currentSession.end()\n }\n }\n }\n\n function disableButton(): void {\n button.style.display = ''\n\n button.style.cursor = 'auto'\n button.style.left = 'calc(50% - 75px)'\n button.style.width = '150px'\n\n button.onmouseenter = null\n button.onmouseleave = null\n\n button.onclick = null\n }\n\n function showWebXRNotFound(): void {\n disableButton()\n\n button.textContent = 'VR NOT SUPPORTED'\n }\n\n function stylizeElement(element: HTMLElement): void {\n element.style.position = 'absolute'\n element.style.bottom = '20px'\n element.style.padding = '12px 6px'\n element.style.border = '1px solid #fff'\n element.style.borderRadius = '4px'\n element.style.background = 'rgba(0,0,0,0.1)'\n element.style.color = '#fff'\n element.style.font = 'normal 13px sans-serif'\n element.style.textAlign = 'center'\n element.style.opacity = '0.5'\n element.style.outline = 'none'\n element.style.zIndex = '999'\n }\n\n if ('xr' in navigator) {\n stylizeElement(button)\n button.id = 'VRButton'\n button.style.display = 'none'\n\n // Query for session mode\n navigator.xr!.isSessionSupported('immersive-vr').then((supported) => {\n supported ? showEnterVR() : showWebXRNotFound()\n\n if (supported && VRButton.xrSessionIsGranted) {\n button.click()\n }\n })\n\n return button\n } else {\n const message = document.createElement('a')\n\n if (window.isSecureContext === false) {\n message.href = document.location.href.replace(/^http:/, 'https:')\n message.innerHTML = 'WEBXR NEEDS HTTPS' // TODO Improve message\n } else {\n message.href = 'https://immersiveweb.dev/'\n message.innerHTML = 'WEBXR NOT AVAILABLE'\n }\n\n message.style.left = 'calc(50% - 90px)'\n message.style.width = '180px'\n message.style.textDecoration = 'none'\n\n stylizeElement(message)\n\n return message\n }\n }\n\n static xrSessionIsGranted = false\n\n static registerSessionGrantedListener(): void {\n if (typeof navigator !== 'undefined' && 'xr' in navigator) {\n ;(navigator as Navigator).xr!.addEventListener('sessiongranted', () => {\n VRButton.xrSessionIsGranted = true\n })\n }\n }\n}\n\nVRButton.registerSessionGrantedListener()\n\nexport { VRButton }\n"],"names":[],"mappings":";;;;;;AAEA,MAAM,YAAN,MAAe;AAAA,EACb,OAAO,aAAa,UAAyB,cAA6B,IAA2C;AAC7G,UAAA,SAAS,SAAS,cAAc,QAAQ;AAE9C,aAAS,cAA8B;AACrC,UAAI,iBAAmC;AAEvC,qBAAe,iBAAiB,SAAmC;AACzD,gBAAA,iBAAiB,OAAO,cAAc;AAExC,cAAA,SAAS,GAAG,WAAW,OAAc;AAC3C,eAAO,cAAc;AAEJ,yBAAA;AAAA,MACnB;AAEA,eAAS,iBAAgC;AACvB,uBAAA,oBAAoB,OAAO,cAAc;AAEzD,eAAO,cAAc;AAEJ,yBAAA;AAAA,MACnB;AAIA,aAAO,MAAM,UAAU;AAEvB,aAAO,MAAM,SAAS;AACtB,aAAO,MAAM,OAAO;AACpB,aAAO,MAAM,QAAQ;AAErB,aAAO,cAAc;AAErB,aAAO,eAAe,MAAY;AAChC,eAAO,MAAM,UAAU;AAAA,MAAA;AAGzB,aAAO,eAAe,MAAY;AAChC,eAAO,MAAM,UAAU;AAAA,MAAA;AAGzB,aAAO,UAAU,MAAY;AA1CnC;AA2CQ,YAAI,mBAAmB,MAAM;AAQrB,gBAAA,mBAAmB,CAAC,YAAY,kBAAkB,eAAe,iBAAiB,eAAe,EACpG,KAAA,EACA,OAAO,OAAO;AAEf,0BAAwB,OAAxB,mBACE,eAAe,gBAAgB,EAAE,GAAG,aAAa,oBAClD,KAAK;AAAA,QAAgB,OACnB;AACL,yBAAe,IAAI;AAAA,QACrB;AAAA,MAAA;AAAA,IAEJ;AAEA,aAAS,gBAAsB;AAC7B,aAAO,MAAM,UAAU;AAEvB,aAAO,MAAM,SAAS;AACtB,aAAO,MAAM,OAAO;AACpB,aAAO,MAAM,QAAQ;AAErB,aAAO,eAAe;AACtB,aAAO,eAAe;AAEtB,aAAO,UAAU;AAAA,IACnB;AAEA,aAAS,oBAA0B;AACnB;AAEd,aAAO,cAAc;AAAA,IACvB;AAEA,aAAS,eAAe,SAA4B;AAClD,cAAQ,MAAM,WAAW;AACzB,cAAQ,MAAM,SAAS;AACvB,cAAQ,MAAM,UAAU;AACxB,cAAQ,MAAM,SAAS;AACvB,cAAQ,MAAM,eAAe;AAC7B,cAAQ,MAAM,aAAa;AAC3B,cAAQ,MAAM,QAAQ;AACtB,cAAQ,MAAM,OAAO;AACrB,cAAQ,MAAM,YAAY;AAC1B,cAAQ,MAAM,UAAU;AACxB,cAAQ,MAAM,UAAU;AACxB,cAAQ,MAAM,SAAS;AAAA,IACzB;AAEA,QAAI,QAAQ,WAAW;AACrB,qBAAe,MAAM;AACrB,aAAO,KAAK;AACZ,aAAO,MAAM,UAAU;AAGvB,gBAAU,GAAI,mBAAmB,cAAc,EAAE,KAAK,CAAC,cAAc;AACvD,oBAAA,gBAAgB;AAExB,YAAA,aAAa,UAAS,oBAAoB;AAC5C,iBAAO,MAAM;AAAA,QACf;AAAA,MAAA,CACD;AAEM,aAAA;AAAA,IAAA,OACF;AACC,YAAA,UAAU,SAAS,cAAc,GAAG;AAEtC,UAAA,OAAO,oBAAoB,OAAO;AACpC,gBAAQ,OAAO,SAAS,SAAS,KAAK,QAAQ,UAAU,QAAQ;AAChE,gBAAQ,YAAY;AAAA,MAAA,OACf;AACL,gBAAQ,OAAO;AACf,gBAAQ,YAAY;AAAA,MACtB;AAEA,cAAQ,MAAM,OAAO;AACrB,cAAQ,MAAM,QAAQ;AACtB,cAAQ,MAAM,iBAAiB;AAE/B,qBAAe,OAAO;AAEf,aAAA;AAAA,IACT;AAAA,EACF;AAAA,EAIA,OAAO,iCAAuC;AAC5C,QAAI,OAAO,cAAc,eAAe,QAAQ,WAAW;AACvD,gBAAwB,GAAI,iBAAiB,kBAAkB,MAAM;AACrE,kBAAS,qBAAqB;AAAA,MAAA,CAC/B;AAAA,IACH;AAAA,EACF;AACF;AA/IA,IAAM,WAAN;AAsIE,cAtII,UAsIG,sBAAqB;AAW9B,SAAS,+BAA+B;"}
1
+ {"version":3,"file":"VRButton.js","sources":["../../src/webxr/VRButton.ts"],"sourcesContent":["import { WebGLRenderer } from 'three'\n\nconst VRButton = /* @__PURE__ */ (() => {\n class VRButton {\n static createButton(\n renderer: WebGLRenderer,\n sessionInit: XRSessionInit = {},\n ): HTMLButtonElement | HTMLAnchorElement {\n const button = document.createElement('button')\n\n function showEnterVR(/*device*/): void {\n let currentSession: XRSession | null = null\n\n async function onSessionStarted(session: XRSession): Promise<void> {\n session.addEventListener('end', onSessionEnded)\n\n await renderer.xr.setSession(session as any)\n button.textContent = 'EXIT VR'\n\n currentSession = session\n }\n\n function onSessionEnded(/*event*/): void {\n currentSession!.removeEventListener('end', onSessionEnded)\n\n button.textContent = 'ENTER VR'\n\n currentSession = null\n }\n\n //\n\n button.style.display = ''\n\n button.style.cursor = 'pointer'\n button.style.left = 'calc(50% - 50px)'\n button.style.width = '100px'\n\n button.textContent = 'ENTER VR'\n\n button.onmouseenter = (): void => {\n button.style.opacity = '1.0'\n }\n\n button.onmouseleave = (): void => {\n button.style.opacity = '0.5'\n }\n\n button.onclick = (): void => {\n if (currentSession === null) {\n // WebXR's requestReferenceSpace only works if the corresponding feature\n // was requested at session creation time. For simplicity, just ask for\n // the interesting ones as optional features, but be aware that the\n // requestReferenceSpace call will fail if it turns out to be unavailable.\n // ('local' is always available for immersive sessions and doesn't need to\n // be requested separately.)\n\n const optionalFeatures = [sessionInit.optionalFeatures, 'local-floor', 'bounded-floor', 'hand-tracking']\n .flat()\n .filter(Boolean) as string[]\n\n ;(navigator as Navigator).xr\n ?.requestSession('immersive-vr', { ...sessionInit, optionalFeatures })\n .then(onSessionStarted)\n } else {\n currentSession.end()\n }\n }\n }\n\n function disableButton(): void {\n button.style.display = ''\n\n button.style.cursor = 'auto'\n button.style.left = 'calc(50% - 75px)'\n button.style.width = '150px'\n\n button.onmouseenter = null\n button.onmouseleave = null\n\n button.onclick = null\n }\n\n function showWebXRNotFound(): void {\n disableButton()\n\n button.textContent = 'VR NOT SUPPORTED'\n }\n\n function stylizeElement(element: HTMLElement): void {\n element.style.position = 'absolute'\n element.style.bottom = '20px'\n element.style.padding = '12px 6px'\n element.style.border = '1px solid #fff'\n element.style.borderRadius = '4px'\n element.style.background = 'rgba(0,0,0,0.1)'\n element.style.color = '#fff'\n element.style.font = 'normal 13px sans-serif'\n element.style.textAlign = 'center'\n element.style.opacity = '0.5'\n element.style.outline = 'none'\n element.style.zIndex = '999'\n }\n\n if ('xr' in navigator) {\n stylizeElement(button)\n button.id = 'VRButton'\n button.style.display = 'none'\n\n // Query for session mode\n navigator.xr!.isSessionSupported('immersive-vr').then((supported) => {\n supported ? showEnterVR() : showWebXRNotFound()\n\n if (supported && VRButton.xrSessionIsGranted) {\n button.click()\n }\n })\n\n return button\n } else {\n const message = document.createElement('a')\n\n if (window.isSecureContext === false) {\n message.href = document.location.href.replace(/^http:/, 'https:')\n message.innerHTML = 'WEBXR NEEDS HTTPS' // TODO Improve message\n } else {\n message.href = 'https://immersiveweb.dev/'\n message.innerHTML = 'WEBXR NOT AVAILABLE'\n }\n\n message.style.left = 'calc(50% - 90px)'\n message.style.width = '180px'\n message.style.textDecoration = 'none'\n\n stylizeElement(message)\n\n return message\n }\n }\n\n static xrSessionIsGranted = false\n\n static registerSessionGrantedListener(): void {\n if (typeof navigator !== 'undefined' && 'xr' in navigator) {\n ;(navigator as Navigator).xr!.addEventListener('sessiongranted', () => {\n VRButton.xrSessionIsGranted = true\n })\n }\n }\n }\n\n VRButton.registerSessionGrantedListener()\n\n return VRButton\n})()\n\nexport { VRButton }\n"],"names":["VRButton"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const THREE = require("three");
4
- const _matrix = new THREE.Matrix4();
5
- const _vector = new THREE.Vector3();
4
+ const _matrix = /* @__PURE__ */ new THREE.Matrix4();
5
+ const _vector = /* @__PURE__ */ new THREE.Vector3();
6
6
  class XRHandPrimitiveModel {
7
7
  constructor(handModel, controller, path, handedness, options) {
8
8
  this.controller = controller;
@@ -1 +1 @@
1
- {"version":3,"file":"XRHandPrimitiveModel.cjs","sources":["../../src/webxr/XRHandPrimitiveModel.js"],"sourcesContent":["import {\n DynamicDrawUsage,\n SphereGeometry,\n BoxGeometry,\n MeshStandardMaterial,\n InstancedMesh,\n Matrix4,\n Vector3,\n} from 'three'\n\nconst _matrix = new Matrix4()\nconst _vector = new Vector3()\n\nclass XRHandPrimitiveModel {\n constructor(handModel, controller, path, handedness, options) {\n this.controller = controller\n this.handModel = handModel\n this.envMap = null\n\n let geometry\n\n if (!options || !options.primitive || options.primitive === 'sphere') {\n geometry = new SphereGeometry(1, 10, 10)\n } else if (options.primitive === 'box') {\n geometry = new BoxGeometry(1, 1, 1)\n }\n\n const material = new MeshStandardMaterial()\n\n this.handMesh = new InstancedMesh(geometry, material, 30)\n this.handMesh.instanceMatrix.setUsage(DynamicDrawUsage) // will be updated every frame\n this.handMesh.castShadow = true\n this.handMesh.receiveShadow = true\n this.handModel.add(this.handMesh)\n\n this.joints = [\n 'wrist',\n 'thumb-metacarpal',\n 'thumb-phalanx-proximal',\n 'thumb-phalanx-distal',\n 'thumb-tip',\n 'index-finger-metacarpal',\n 'index-finger-phalanx-proximal',\n 'index-finger-phalanx-intermediate',\n 'index-finger-phalanx-distal',\n 'index-finger-tip',\n 'middle-finger-metacarpal',\n 'middle-finger-phalanx-proximal',\n 'middle-finger-phalanx-intermediate',\n 'middle-finger-phalanx-distal',\n 'middle-finger-tip',\n 'ring-finger-metacarpal',\n 'ring-finger-phalanx-proximal',\n 'ring-finger-phalanx-intermediate',\n 'ring-finger-phalanx-distal',\n 'ring-finger-tip',\n 'pinky-finger-metacarpal',\n 'pinky-finger-phalanx-proximal',\n 'pinky-finger-phalanx-intermediate',\n 'pinky-finger-phalanx-distal',\n 'pinky-finger-tip',\n ]\n }\n\n updateMesh() {\n const defaultRadius = 0.008\n const joints = this.controller.joints\n\n let count = 0\n\n for (let i = 0; i < this.joints.length; i++) {\n const joint = joints[this.joints[i]]\n\n if (joint.visible) {\n _vector.setScalar(joint.jointRadius || defaultRadius)\n _matrix.compose(joint.position, joint.quaternion, _vector)\n this.handMesh.setMatrixAt(i, _matrix)\n\n count++\n }\n }\n\n this.handMesh.count = count\n this.handMesh.instanceMatrix.needsUpdate = true\n }\n}\n\nexport { XRHandPrimitiveModel }\n"],"names":["Matrix4","Vector3","SphereGeometry","BoxGeometry","MeshStandardMaterial","InstancedMesh","DynamicDrawUsage"],"mappings":";;;AAUA,MAAM,UAAU,IAAIA,MAAAA,QAAS;AAC7B,MAAM,UAAU,IAAIC,MAAAA,QAAS;AAE7B,MAAM,qBAAqB;AAAA,EACzB,YAAY,WAAW,YAAY,MAAM,YAAY,SAAS;AAC5D,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,SAAS;AAEd,QAAI;AAEJ,QAAI,CAAC,WAAW,CAAC,QAAQ,aAAa,QAAQ,cAAc,UAAU;AACpE,iBAAW,IAAIC,MAAc,eAAC,GAAG,IAAI,EAAE;AAAA,IAC7C,WAAe,QAAQ,cAAc,OAAO;AACtC,iBAAW,IAAIC,MAAW,YAAC,GAAG,GAAG,CAAC;AAAA,IACnC;AAED,UAAM,WAAW,IAAIC,2BAAsB;AAE3C,SAAK,WAAW,IAAIC,MAAAA,cAAc,UAAU,UAAU,EAAE;AACxD,SAAK,SAAS,eAAe,SAASC,MAAAA,gBAAgB;AACtD,SAAK,SAAS,aAAa;AAC3B,SAAK,SAAS,gBAAgB;AAC9B,SAAK,UAAU,IAAI,KAAK,QAAQ;AAEhC,SAAK,SAAS;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACF;AAAA,EAED,aAAa;AACX,UAAM,gBAAgB;AACtB,UAAM,SAAS,KAAK,WAAW;AAE/B,QAAI,QAAQ;AAEZ,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,YAAM,QAAQ,OAAO,KAAK,OAAO,CAAC,CAAC;AAEnC,UAAI,MAAM,SAAS;AACjB,gBAAQ,UAAU,MAAM,eAAe,aAAa;AACpD,gBAAQ,QAAQ,MAAM,UAAU,MAAM,YAAY,OAAO;AACzD,aAAK,SAAS,YAAY,GAAG,OAAO;AAEpC;AAAA,MACD;AAAA,IACF;AAED,SAAK,SAAS,QAAQ;AACtB,SAAK,SAAS,eAAe,cAAc;AAAA,EAC5C;AACH;;"}
1
+ {"version":3,"file":"XRHandPrimitiveModel.cjs","sources":["../../src/webxr/XRHandPrimitiveModel.js"],"sourcesContent":["import {\n DynamicDrawUsage,\n SphereGeometry,\n BoxGeometry,\n MeshStandardMaterial,\n InstancedMesh,\n Matrix4,\n Vector3,\n} from 'three'\n\nconst _matrix = /* @__PURE__ */ new Matrix4()\nconst _vector = /* @__PURE__ */ new Vector3()\n\nclass XRHandPrimitiveModel {\n constructor(handModel, controller, path, handedness, options) {\n this.controller = controller\n this.handModel = handModel\n this.envMap = null\n\n let geometry\n\n if (!options || !options.primitive || options.primitive === 'sphere') {\n geometry = new SphereGeometry(1, 10, 10)\n } else if (options.primitive === 'box') {\n geometry = new BoxGeometry(1, 1, 1)\n }\n\n const material = new MeshStandardMaterial()\n\n this.handMesh = new InstancedMesh(geometry, material, 30)\n this.handMesh.instanceMatrix.setUsage(DynamicDrawUsage) // will be updated every frame\n this.handMesh.castShadow = true\n this.handMesh.receiveShadow = true\n this.handModel.add(this.handMesh)\n\n this.joints = [\n 'wrist',\n 'thumb-metacarpal',\n 'thumb-phalanx-proximal',\n 'thumb-phalanx-distal',\n 'thumb-tip',\n 'index-finger-metacarpal',\n 'index-finger-phalanx-proximal',\n 'index-finger-phalanx-intermediate',\n 'index-finger-phalanx-distal',\n 'index-finger-tip',\n 'middle-finger-metacarpal',\n 'middle-finger-phalanx-proximal',\n 'middle-finger-phalanx-intermediate',\n 'middle-finger-phalanx-distal',\n 'middle-finger-tip',\n 'ring-finger-metacarpal',\n 'ring-finger-phalanx-proximal',\n 'ring-finger-phalanx-intermediate',\n 'ring-finger-phalanx-distal',\n 'ring-finger-tip',\n 'pinky-finger-metacarpal',\n 'pinky-finger-phalanx-proximal',\n 'pinky-finger-phalanx-intermediate',\n 'pinky-finger-phalanx-distal',\n 'pinky-finger-tip',\n ]\n }\n\n updateMesh() {\n const defaultRadius = 0.008\n const joints = this.controller.joints\n\n let count = 0\n\n for (let i = 0; i < this.joints.length; i++) {\n const joint = joints[this.joints[i]]\n\n if (joint.visible) {\n _vector.setScalar(joint.jointRadius || defaultRadius)\n _matrix.compose(joint.position, joint.quaternion, _vector)\n this.handMesh.setMatrixAt(i, _matrix)\n\n count++\n }\n }\n\n this.handMesh.count = count\n this.handMesh.instanceMatrix.needsUpdate = true\n }\n}\n\nexport { XRHandPrimitiveModel }\n"],"names":["Matrix4","Vector3","SphereGeometry","BoxGeometry","MeshStandardMaterial","InstancedMesh","DynamicDrawUsage"],"mappings":";;;AAUA,MAAM,UAA0B,oBAAIA,MAAAA,QAAS;AAC7C,MAAM,UAA0B,oBAAIC,MAAAA,QAAS;AAE7C,MAAM,qBAAqB;AAAA,EACzB,YAAY,WAAW,YAAY,MAAM,YAAY,SAAS;AAC5D,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,SAAS;AAEd,QAAI;AAEJ,QAAI,CAAC,WAAW,CAAC,QAAQ,aAAa,QAAQ,cAAc,UAAU;AACpE,iBAAW,IAAIC,MAAc,eAAC,GAAG,IAAI,EAAE;AAAA,IAC7C,WAAe,QAAQ,cAAc,OAAO;AACtC,iBAAW,IAAIC,MAAW,YAAC,GAAG,GAAG,CAAC;AAAA,IACnC;AAED,UAAM,WAAW,IAAIC,2BAAsB;AAE3C,SAAK,WAAW,IAAIC,MAAAA,cAAc,UAAU,UAAU,EAAE;AACxD,SAAK,SAAS,eAAe,SAASC,MAAAA,gBAAgB;AACtD,SAAK,SAAS,aAAa;AAC3B,SAAK,SAAS,gBAAgB;AAC9B,SAAK,UAAU,IAAI,KAAK,QAAQ;AAEhC,SAAK,SAAS;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACF;AAAA,EAED,aAAa;AACX,UAAM,gBAAgB;AACtB,UAAM,SAAS,KAAK,WAAW;AAE/B,QAAI,QAAQ;AAEZ,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,YAAM,QAAQ,OAAO,KAAK,OAAO,CAAC,CAAC;AAEnC,UAAI,MAAM,SAAS;AACjB,gBAAQ,UAAU,MAAM,eAAe,aAAa;AACpD,gBAAQ,QAAQ,MAAM,UAAU,MAAM,YAAY,OAAO;AACzD,aAAK,SAAS,YAAY,GAAG,OAAO;AAEpC;AAAA,MACD;AAAA,IACF;AAED,SAAK,SAAS,QAAQ;AACtB,SAAK,SAAS,eAAe,cAAc;AAAA,EAC5C;AACH;;"}
@@ -1,6 +1,6 @@
1
- import { Matrix4, Vector3, SphereGeometry, BoxGeometry, MeshStandardMaterial, InstancedMesh, DynamicDrawUsage } from "three";
2
- const _matrix = new Matrix4();
3
- const _vector = new Vector3();
1
+ import { SphereGeometry, BoxGeometry, MeshStandardMaterial, InstancedMesh, DynamicDrawUsage, Matrix4, Vector3 } from "three";
2
+ const _matrix = /* @__PURE__ */ new Matrix4();
3
+ const _vector = /* @__PURE__ */ new Vector3();
4
4
  class XRHandPrimitiveModel {
5
5
  constructor(handModel, controller, path, handedness, options) {
6
6
  this.controller = controller;
@@ -1 +1 @@
1
- {"version":3,"file":"XRHandPrimitiveModel.js","sources":["../../src/webxr/XRHandPrimitiveModel.js"],"sourcesContent":["import {\n DynamicDrawUsage,\n SphereGeometry,\n BoxGeometry,\n MeshStandardMaterial,\n InstancedMesh,\n Matrix4,\n Vector3,\n} from 'three'\n\nconst _matrix = new Matrix4()\nconst _vector = new Vector3()\n\nclass XRHandPrimitiveModel {\n constructor(handModel, controller, path, handedness, options) {\n this.controller = controller\n this.handModel = handModel\n this.envMap = null\n\n let geometry\n\n if (!options || !options.primitive || options.primitive === 'sphere') {\n geometry = new SphereGeometry(1, 10, 10)\n } else if (options.primitive === 'box') {\n geometry = new BoxGeometry(1, 1, 1)\n }\n\n const material = new MeshStandardMaterial()\n\n this.handMesh = new InstancedMesh(geometry, material, 30)\n this.handMesh.instanceMatrix.setUsage(DynamicDrawUsage) // will be updated every frame\n this.handMesh.castShadow = true\n this.handMesh.receiveShadow = true\n this.handModel.add(this.handMesh)\n\n this.joints = [\n 'wrist',\n 'thumb-metacarpal',\n 'thumb-phalanx-proximal',\n 'thumb-phalanx-distal',\n 'thumb-tip',\n 'index-finger-metacarpal',\n 'index-finger-phalanx-proximal',\n 'index-finger-phalanx-intermediate',\n 'index-finger-phalanx-distal',\n 'index-finger-tip',\n 'middle-finger-metacarpal',\n 'middle-finger-phalanx-proximal',\n 'middle-finger-phalanx-intermediate',\n 'middle-finger-phalanx-distal',\n 'middle-finger-tip',\n 'ring-finger-metacarpal',\n 'ring-finger-phalanx-proximal',\n 'ring-finger-phalanx-intermediate',\n 'ring-finger-phalanx-distal',\n 'ring-finger-tip',\n 'pinky-finger-metacarpal',\n 'pinky-finger-phalanx-proximal',\n 'pinky-finger-phalanx-intermediate',\n 'pinky-finger-phalanx-distal',\n 'pinky-finger-tip',\n ]\n }\n\n updateMesh() {\n const defaultRadius = 0.008\n const joints = this.controller.joints\n\n let count = 0\n\n for (let i = 0; i < this.joints.length; i++) {\n const joint = joints[this.joints[i]]\n\n if (joint.visible) {\n _vector.setScalar(joint.jointRadius || defaultRadius)\n _matrix.compose(joint.position, joint.quaternion, _vector)\n this.handMesh.setMatrixAt(i, _matrix)\n\n count++\n }\n }\n\n this.handMesh.count = count\n this.handMesh.instanceMatrix.needsUpdate = true\n }\n}\n\nexport { XRHandPrimitiveModel }\n"],"names":[],"mappings":";AAUA,MAAM,UAAU,IAAI,QAAS;AAC7B,MAAM,UAAU,IAAI,QAAS;AAE7B,MAAM,qBAAqB;AAAA,EACzB,YAAY,WAAW,YAAY,MAAM,YAAY,SAAS;AAC5D,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,SAAS;AAEd,QAAI;AAEJ,QAAI,CAAC,WAAW,CAAC,QAAQ,aAAa,QAAQ,cAAc,UAAU;AACpE,iBAAW,IAAI,eAAe,GAAG,IAAI,EAAE;AAAA,IAC7C,WAAe,QAAQ,cAAc,OAAO;AACtC,iBAAW,IAAI,YAAY,GAAG,GAAG,CAAC;AAAA,IACnC;AAED,UAAM,WAAW,IAAI,qBAAsB;AAE3C,SAAK,WAAW,IAAI,cAAc,UAAU,UAAU,EAAE;AACxD,SAAK,SAAS,eAAe,SAAS,gBAAgB;AACtD,SAAK,SAAS,aAAa;AAC3B,SAAK,SAAS,gBAAgB;AAC9B,SAAK,UAAU,IAAI,KAAK,QAAQ;AAEhC,SAAK,SAAS;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACF;AAAA,EAED,aAAa;AACX,UAAM,gBAAgB;AACtB,UAAM,SAAS,KAAK,WAAW;AAE/B,QAAI,QAAQ;AAEZ,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,YAAM,QAAQ,OAAO,KAAK,OAAO,CAAC,CAAC;AAEnC,UAAI,MAAM,SAAS;AACjB,gBAAQ,UAAU,MAAM,eAAe,aAAa;AACpD,gBAAQ,QAAQ,MAAM,UAAU,MAAM,YAAY,OAAO;AACzD,aAAK,SAAS,YAAY,GAAG,OAAO;AAEpC;AAAA,MACD;AAAA,IACF;AAED,SAAK,SAAS,QAAQ;AACtB,SAAK,SAAS,eAAe,cAAc;AAAA,EAC5C;AACH;"}
1
+ {"version":3,"file":"XRHandPrimitiveModel.js","sources":["../../src/webxr/XRHandPrimitiveModel.js"],"sourcesContent":["import {\n DynamicDrawUsage,\n SphereGeometry,\n BoxGeometry,\n MeshStandardMaterial,\n InstancedMesh,\n Matrix4,\n Vector3,\n} from 'three'\n\nconst _matrix = /* @__PURE__ */ new Matrix4()\nconst _vector = /* @__PURE__ */ new Vector3()\n\nclass XRHandPrimitiveModel {\n constructor(handModel, controller, path, handedness, options) {\n this.controller = controller\n this.handModel = handModel\n this.envMap = null\n\n let geometry\n\n if (!options || !options.primitive || options.primitive === 'sphere') {\n geometry = new SphereGeometry(1, 10, 10)\n } else if (options.primitive === 'box') {\n geometry = new BoxGeometry(1, 1, 1)\n }\n\n const material = new MeshStandardMaterial()\n\n this.handMesh = new InstancedMesh(geometry, material, 30)\n this.handMesh.instanceMatrix.setUsage(DynamicDrawUsage) // will be updated every frame\n this.handMesh.castShadow = true\n this.handMesh.receiveShadow = true\n this.handModel.add(this.handMesh)\n\n this.joints = [\n 'wrist',\n 'thumb-metacarpal',\n 'thumb-phalanx-proximal',\n 'thumb-phalanx-distal',\n 'thumb-tip',\n 'index-finger-metacarpal',\n 'index-finger-phalanx-proximal',\n 'index-finger-phalanx-intermediate',\n 'index-finger-phalanx-distal',\n 'index-finger-tip',\n 'middle-finger-metacarpal',\n 'middle-finger-phalanx-proximal',\n 'middle-finger-phalanx-intermediate',\n 'middle-finger-phalanx-distal',\n 'middle-finger-tip',\n 'ring-finger-metacarpal',\n 'ring-finger-phalanx-proximal',\n 'ring-finger-phalanx-intermediate',\n 'ring-finger-phalanx-distal',\n 'ring-finger-tip',\n 'pinky-finger-metacarpal',\n 'pinky-finger-phalanx-proximal',\n 'pinky-finger-phalanx-intermediate',\n 'pinky-finger-phalanx-distal',\n 'pinky-finger-tip',\n ]\n }\n\n updateMesh() {\n const defaultRadius = 0.008\n const joints = this.controller.joints\n\n let count = 0\n\n for (let i = 0; i < this.joints.length; i++) {\n const joint = joints[this.joints[i]]\n\n if (joint.visible) {\n _vector.setScalar(joint.jointRadius || defaultRadius)\n _matrix.compose(joint.position, joint.quaternion, _vector)\n this.handMesh.setMatrixAt(i, _matrix)\n\n count++\n }\n }\n\n this.handMesh.count = count\n this.handMesh.instanceMatrix.needsUpdate = true\n }\n}\n\nexport { XRHandPrimitiveModel }\n"],"names":[],"mappings":";AAUA,MAAM,UAA0B,oBAAI,QAAS;AAC7C,MAAM,UAA0B,oBAAI,QAAS;AAE7C,MAAM,qBAAqB;AAAA,EACzB,YAAY,WAAW,YAAY,MAAM,YAAY,SAAS;AAC5D,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,SAAS;AAEd,QAAI;AAEJ,QAAI,CAAC,WAAW,CAAC,QAAQ,aAAa,QAAQ,cAAc,UAAU;AACpE,iBAAW,IAAI,eAAe,GAAG,IAAI,EAAE;AAAA,IAC7C,WAAe,QAAQ,cAAc,OAAO;AACtC,iBAAW,IAAI,YAAY,GAAG,GAAG,CAAC;AAAA,IACnC;AAED,UAAM,WAAW,IAAI,qBAAsB;AAE3C,SAAK,WAAW,IAAI,cAAc,UAAU,UAAU,EAAE;AACxD,SAAK,SAAS,eAAe,SAAS,gBAAgB;AACtD,SAAK,SAAS,aAAa;AAC3B,SAAK,SAAS,gBAAgB;AAC9B,SAAK,UAAU,IAAI,KAAK,QAAQ;AAEhC,SAAK,SAAS;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACF;AAAA,EAED,aAAa;AACX,UAAM,gBAAgB;AACtB,UAAM,SAAS,KAAK,WAAW;AAE/B,QAAI,QAAQ;AAEZ,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,YAAM,QAAQ,OAAO,KAAK,OAAO,CAAC,CAAC;AAEnC,UAAI,MAAM,SAAS;AACjB,gBAAQ,UAAU,MAAM,eAAe,aAAa;AACpD,gBAAQ,QAAQ,MAAM,UAAU,MAAM,YAAY,OAAO;AACzD,aAAK,SAAS,YAAY,GAAG,OAAO;AAEpC;AAAA,MACD;AAAA,IACF;AAED,SAAK,SAAS,QAAQ;AACtB,SAAK,SAAS,eAAe,cAAc;AAAA,EAC5C;AACH;"}