@ohos-ports/react-three-drei 10.7.7-beta.0
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.
- package/LICENSE +21 -0
- package/README.md +852 -0
- package/core/AccumulativeShadows.cjs.js +1 -0
- package/core/AccumulativeShadows.d.ts +59 -0
- package/core/AccumulativeShadows.js +310 -0
- package/core/AdaptiveDpr.cjs.js +1 -0
- package/core/AdaptiveDpr.d.ts +3 -0
- package/core/AdaptiveDpr.js +28 -0
- package/core/AdaptiveEvents.cjs.js +1 -0
- package/core/AdaptiveEvents.d.ts +1 -0
- package/core/AdaptiveEvents.js +20 -0
- package/core/ArcballControls.cjs.js +1 -0
- package/core/ArcballControls.d.ts +15 -0
- package/core/ArcballControls.js +67 -0
- package/core/AsciiRenderer.cjs.js +1 -0
- package/core/AsciiRenderer.d.ts +11 -0
- package/core/AsciiRenderer.js +66 -0
- package/core/BBAnchor.cjs.js +1 -0
- package/core/BBAnchor.d.ts +7 -0
- package/core/BBAnchor.js +37 -0
- package/core/Backdrop.cjs.js +1 -0
- package/core/Backdrop.d.ts +15 -0
- package/core/Backdrop.js +33 -0
- package/core/BakeShadows.cjs.js +1 -0
- package/core/BakeShadows.d.ts +1 -0
- package/core/BakeShadows.js +16 -0
- package/core/Billboard.cjs.js +1 -0
- package/core/Billboard.d.ts +10 -0
- package/core/Billboard.js +53 -0
- package/core/Bounds.cjs.js +1 -0
- package/core/Bounds.d.ts +36 -0
- package/core/Bounds.js +254 -0
- package/core/Bvh.cjs.js +1 -0
- package/core/Bvh.d.ts +19 -0
- package/core/Bvh.js +92 -0
- package/core/CameraControls.cjs.js +1 -0
- package/core/CameraControls.d.ts +48 -0
- package/core/CameraControls.js +151 -0
- package/core/CameraShake.cjs.js +1 -0
- package/core/CameraShake.d.ts +17 -0
- package/core/CameraShake.js +57 -0
- package/core/CatmullRomLine.cjs.js +1 -0
- package/core/CatmullRomLine.d.ts +10 -0
- package/core/CatmullRomLine.js +42 -0
- package/core/Caustics.cjs.js +1 -0
- package/core/Caustics.d.ts +32 -0
- package/core/Caustics.js +388 -0
- package/core/Center.cjs.js +1 -0
- package/core/Center.d.ts +33 -0
- package/core/Center.js +67 -0
- package/core/Clone.cjs.js +1 -0
- package/core/Clone.d.ts +15 -0
- package/core/Clone.js +100 -0
- package/core/Cloud.cjs.js +1 -0
- package/core/Cloud.d.ts +97 -0
- package/core/Cloud.js +231 -0
- package/core/ComputedAttribute.cjs.js +1 -0
- package/core/ComputedAttribute.d.ts +8 -0
- package/core/ComputedAttribute.js +33 -0
- package/core/ContactShadows.cjs.js +1 -0
- package/core/ContactShadows.d.ts +18 -0
- package/core/ContactShadows.js +114 -0
- package/core/CubeCamera.cjs.js +1 -0
- package/core/CubeCamera.d.ts +21 -0
- package/core/CubeCamera.js +86 -0
- package/core/CubeTexture.cjs.js +1 -0
- package/core/CubeTexture.d.ts +14 -0
- package/core/CubeTexture.js +25 -0
- package/core/CubicBezierLine.cjs.js +1 -0
- package/core/CubicBezierLine.d.ts +12 -0
- package/core/CubicBezierLine.js +28 -0
- package/core/CurveModifier.cjs.js +1 -0
- package/core/CurveModifier.d.ts +11 -0
- package/core/CurveModifier.js +27 -0
- package/core/Decal.cjs.js +1 -0
- package/core/Decal.d.ts +16 -0
- package/core/Decal.js +128 -0
- package/core/Detailed.cjs.js +1 -0
- package/core/Detailed.d.ts +10 -0
- package/core/Detailed.js +33 -0
- package/core/DetectGPU.cjs.js +1 -0
- package/core/DetectGPU.d.ts +7 -0
- package/core/DetectGPU.js +14 -0
- package/core/DeviceOrientationControls.cjs.js +1 -0
- package/core/DeviceOrientationControls.d.ts +10 -0
- package/core/DeviceOrientationControls.js +51 -0
- package/core/Edges.cjs.js +1 -0
- package/core/Edges.d.ts +13 -0
- package/core/Edges.js +38 -0
- package/core/Effects.cjs.js +1 -0
- package/core/Effects.d.ts +25 -0
- package/core/Effects.js +91 -0
- package/core/Environment.cjs.js +1 -0
- package/core/Environment.d.ts +37 -0
- package/core/Environment.js +189 -0
- package/core/Example.cjs.js +1 -0
- package/core/Example.d.ts +13 -0
- package/core/Example.js +46 -0
- package/core/Fbo.cjs.js +1 -0
- package/core/Fbo.d.ts +22 -0
- package/core/Fbo.js +63 -0
- package/core/Fbx.cjs.js +1 -0
- package/core/Fbx.d.ts +11 -0
- package/core/Fbx.js +23 -0
- package/core/FirstPersonControls.cjs.js +1 -0
- package/core/FirstPersonControls.d.ts +8 -0
- package/core/FirstPersonControls.js +38 -0
- package/core/Fisheye.cjs.js +1 -0
- package/core/Fisheye.d.ts +10 -0
- package/core/Fisheye.js +95 -0
- package/core/Float.cjs.js +1 -0
- package/core/Float.d.ts +14 -0
- package/core/Float.js +37 -0
- package/core/FlyControls.cjs.js +1 -0
- package/core/FlyControls.d.ts +10 -0
- package/core/FlyControls.js +55 -0
- package/core/GizmoHelper.cjs.js +1 -0
- package/core/GizmoHelper.d.ts +16 -0
- package/core/GizmoHelper.js +116 -0
- package/core/GizmoViewcube.cjs.js +1 -0
- package/core/GizmoViewcube.d.ts +14 -0
- package/core/GizmoViewcube.js +133 -0
- package/core/GizmoViewport.cjs.js +1 -0
- package/core/GizmoViewport.d.ts +16 -0
- package/core/GizmoViewport.js +140 -0
- package/core/Gltf.cjs.js +1 -0
- package/core/Gltf.d.ts +27 -0
- package/core/Gltf.js +52 -0
- package/core/GradientTexture.cjs.js +1 -0
- package/core/GradientTexture.d.ts +18 -0
- package/core/GradientTexture.js +54 -0
- package/core/Grid.cjs.js +1 -0
- package/core/Grid.d.ts +26 -0
- package/core/Grid.js +142 -0
- package/core/Helper.cjs.js +1 -0
- package/core/Helper.d.ts +16 -0
- package/core/Helper.js +47 -0
- package/core/Hud.cjs.js +1 -0
- package/core/Hud.d.ts +6 -0
- package/core/Hud.js +55 -0
- package/core/Image.cjs.js +1 -0
- package/core/Image.d.ts +38 -0
- package/core/Image.js +160 -0
- package/core/Instances.cjs.js +1 -0
- package/core/Instances.d.ts +64 -0
- package/core/Instances.js +313 -0
- package/core/Ktx2.cjs.js +1 -0
- package/core/Ktx2.d.ts +14 -0
- package/core/Ktx2.js +48 -0
- package/core/Lightformer.cjs.js +1 -0
- package/core/Lightformer.d.ts +15 -0
- package/core/Lightformer.js +63 -0
- package/core/Line.cjs.js +1 -0
- package/core/Line.d.ts +13 -0
- package/core/Line.js +73 -0
- package/core/MapControls.cjs.js +1 -0
- package/core/MapControls.d.ts +14 -0
- package/core/MapControls.js +63 -0
- package/core/MarchingCubes.cjs.js +1 -0
- package/core/MarchingCubes.d.ts +24 -0
- package/core/MarchingCubes.js +78 -0
- package/core/Mask.cjs.js +1 -0
- package/core/Mask.d.ts +17 -0
- package/core/Mask.js +42 -0
- package/core/MatcapTexture.cjs.js +1 -0
- package/core/MatcapTexture.d.ts +9 -0
- package/core/MatcapTexture.js +51 -0
- package/core/MeshDiscardMaterial.cjs.js +1 -0
- package/core/MeshDiscardMaterial.d.ts +10 -0
- package/core/MeshDiscardMaterial.js +15 -0
- package/core/MeshDistortMaterial.cjs.js +1 -0
- package/core/MeshDistortMaterial.d.ts +39 -0
- package/core/MeshDistortMaterial.js +72 -0
- package/core/MeshPortalMaterial.cjs.js +1 -0
- package/core/MeshPortalMaterial.d.ts +25 -0
- package/core/MeshPortalMaterial.js +467 -0
- package/core/MeshReflectorMaterial.cjs.js +1 -0
- package/core/MeshReflectorMaterial.d.ts +14 -0
- package/core/MeshReflectorMaterial.js +180 -0
- package/core/MeshRefractionMaterial.cjs.js +1 -0
- package/core/MeshRefractionMaterial.d.ts +19 -0
- package/core/MeshRefractionMaterial.js +73 -0
- package/core/MeshTransmissionMaterial.cjs.js +1 -0
- package/core/MeshTransmissionMaterial.d.ts +34 -0
- package/core/MeshTransmissionMaterial.js +402 -0
- package/core/MeshWobbleMaterial.cjs.js +1 -0
- package/core/MeshWobbleMaterial.d.ts +36 -0
- package/core/MeshWobbleMaterial.js +60 -0
- package/core/MotionPathControls.cjs.js +1 -0
- package/core/MotionPathControls.d.ts +33 -0
- package/core/MotionPathControls.js +121 -0
- package/core/MultiMaterial.cjs.js +1 -0
- package/core/MultiMaterial.d.ts +4 -0
- package/core/MultiMaterial.js +29 -0
- package/core/NormalTexture.cjs.js +1 -0
- package/core/NormalTexture.d.ts +14 -0
- package/core/NormalTexture.js +42 -0
- package/core/OrbitControls.cjs.js +1 -0
- package/core/OrbitControls.d.ts +22 -0
- package/core/OrbitControls.js +79 -0
- package/core/OrthographicCamera.cjs.js +1 -0
- package/core/OrthographicCamera.d.ts +14 -0
- package/core/OrthographicCamera.js +76 -0
- package/core/Outlines.cjs.js +1 -0
- package/core/Outlines.d.ts +17 -0
- package/core/Outlines.js +166 -0
- package/core/PerformanceMonitor.cjs.js +1 -0
- package/core/PerformanceMonitor.d.ts +36 -0
- package/core/PerformanceMonitor.js +116 -0
- package/core/PerspectiveCamera.cjs.js +1 -0
- package/core/PerspectiveCamera.d.ts +14 -0
- package/core/PerspectiveCamera.js +72 -0
- package/core/PointMaterial.cjs.js +1 -0
- package/core/PointMaterial.d.ts +8 -0
- package/core/PointMaterial.js +36 -0
- package/core/PointerLockControls.cjs.js +1 -0
- package/core/PointerLockControls.d.ts +15 -0
- package/core/PointerLockControls.js +89 -0
- package/core/Points.cjs.js +1 -0
- package/core/Points.d.ts +31 -0
- package/core/Points.js +202 -0
- package/core/PositionalAudio.cjs.js +1 -0
- package/core/PositionalAudio.d.ts +9 -0
- package/core/PositionalAudio.js +46 -0
- package/core/Preload.cjs.js +1 -0
- package/core/Preload.d.ts +7 -0
- package/core/Preload.js +44 -0
- package/core/Progress.cjs.js +1 -0
- package/core/Progress.d.ts +14 -0
- package/core/Progress.js +55 -0
- package/core/QuadraticBezierLine.cjs.js +1 -0
- package/core/QuadraticBezierLine.d.ts +14 -0
- package/core/QuadraticBezierLine.js +42 -0
- package/core/RenderCubeTexture.cjs.js +1 -0
- package/core/RenderCubeTexture.d.ts +30 -0
- package/core/RenderCubeTexture.js +96 -0
- package/core/RenderTexture.cjs.js +1 -0
- package/core/RenderTexture.d.ts +18 -0
- package/core/RenderTexture.js +105 -0
- package/core/Resize.cjs.js +1 -0
- package/core/Resize.d.ts +17 -0
- package/core/Resize.js +39 -0
- package/core/RoundedBox.cjs.js +1 -0
- package/core/RoundedBox.d.ts +14 -0
- package/core/RoundedBox.js +70 -0
- package/core/Sampler.cjs.js +1 -0
- package/core/Sampler.d.ts +28 -0
- package/core/Sampler.js +75 -0
- package/core/ScreenQuad.cjs.js +1 -0
- package/core/ScreenQuad.d.ts +5 -0
- package/core/ScreenQuad.js +25 -0
- package/core/ScreenSizer.cjs.js +1 -0
- package/core/ScreenSizer.d.ts +7 -0
- package/core/ScreenSizer.js +39 -0
- package/core/ScreenSpace.cjs.js +1 -0
- package/core/ScreenSpace.d.ts +7 -0
- package/core/ScreenSpace.js +25 -0
- package/core/Segments.cjs.js +1 -0
- package/core/Segments.d.ts +29 -0
- package/core/Segments.js +96 -0
- package/core/Shadow.cjs.js +1 -0
- package/core/Shadow.d.ts +12 -0
- package/core/Shadow.js +42 -0
- package/core/ShadowAlpha.cjs.js +1 -0
- package/core/ShadowAlpha.d.ts +7 -0
- package/core/ShadowAlpha.js +108 -0
- package/core/Sky.cjs.js +1 -0
- package/core/Sky.d.ts +16 -0
- package/core/Sky.js +39 -0
- package/core/Sparkles.cjs.js +1 -0
- package/core/Sparkles.d.ts +26 -0
- package/core/Sparkles.js +161 -0
- package/core/Splat.cjs.js +1 -0
- package/core/Splat.d.ts +56 -0
- package/core/Splat.js +506 -0
- package/core/SpotLight.cjs.js +1 -0
- package/core/SpotLight.d.ts +27 -0
- package/core/SpotLight.js +223 -0
- package/core/SpriteAnimator.cjs.js +1 -0
- package/core/SpriteAnimator.d.ts +88 -0
- package/core/SpriteAnimator.js +413 -0
- package/core/Stage.cjs.js +1 -0
- package/core/Stage.d.ts +27 -0
- package/core/Stage.js +133 -0
- package/core/Stars.cjs.js +1 -0
- package/core/Stars.d.ts +22 -0
- package/core/Stars.js +100 -0
- package/core/Stats.cjs.js +1 -0
- package/core/Stats.d.ts +7 -0
- package/core/Stats.js +32 -0
- package/core/StatsGl.cjs.js +1 -0
- package/core/StatsGl.d.ts +14 -0
- package/core/StatsGl.js +44 -0
- package/core/Svg.cjs.js +1 -0
- package/core/Svg.d.ts +13 -0
- package/core/Svg.js +62 -0
- package/core/Text.cjs.js +1 -0
- package/core/Text.d.ts +38 -0
- package/core/Text.js +57 -0
- package/core/Text3D.cjs.js +1 -0
- package/core/Text3D.d.ts +20 -0
- package/core/Text3D.js +74 -0
- package/core/Texture.cjs.js +1 -0
- package/core/Texture.d.ts +20 -0
- package/core/Texture.js +60 -0
- package/core/TrackballControls.cjs.js +1 -0
- package/core/TrackballControls.d.ts +15 -0
- package/core/TrackballControls.js +72 -0
- package/core/Trail.cjs.js +1 -0
- package/core/Trail.d.ts +21 -0
- package/core/Trail.js +150 -0
- package/core/TrailTexture.cjs.js +1 -0
- package/core/TrailTexture.d.ts +19 -0
- package/core/TrailTexture.js +159 -0
- package/core/TransformControls.cjs.js +1 -0
- package/core/TransformControls.d.ts +28 -0
- package/core/TransformControls.js +114 -0
- package/core/VideoTexture.cjs.js +1 -0
- package/core/VideoTexture.d.ts +26 -0
- package/core/VideoTexture.js +111 -0
- package/core/Wireframe.cjs.js +1 -0
- package/core/Wireframe.d.ts +15 -0
- package/core/Wireframe.js +157 -0
- package/core/calculateScaleFactor.cjs.js +1 -0
- package/core/calculateScaleFactor.d.ts +3 -0
- package/core/calculateScaleFactor.js +31 -0
- package/core/index.cjs.js +1 -0
- package/core/index.d.ts +122 -0
- package/core/index.js +150 -0
- package/core/meshBounds.cjs.js +1 -0
- package/core/meshBounds.d.ts +2 -0
- package/core/meshBounds.js +28 -0
- package/core/shaderMaterial.cjs.js +1 -0
- package/core/shaderMaterial.d.ts +9 -0
- package/core/shaderMaterial.js +29 -0
- package/core/shapes.cjs.js +1 -0
- package/core/shapes.d.ts +26 -0
- package/core/shapes.js +65 -0
- package/core/softShadows.cjs.js +1 -0
- package/core/softShadows.d.ts +6 -0
- package/core/softShadows.js +158 -0
- package/core/useAnimations.cjs.js +1 -0
- package/core/useAnimations.d.ts +13 -0
- package/core/useAnimations.js +52 -0
- package/core/useAspect.cjs.js +1 -0
- package/core/useAspect.d.ts +1 -0
- package/core/useAspect.js +10 -0
- package/core/useBoxProjectedEnv.cjs.js +1 -0
- package/core/useBoxProjectedEnv.d.ts +19 -0
- package/core/useBoxProjectedEnv.js +95 -0
- package/core/useCamera.cjs.js +1 -0
- package/core/useCamera.d.ts +3 -0
- package/core/useCamera.js +19 -0
- package/core/useContextBridge.cjs.js +1 -0
- package/core/useContextBridge.d.ts +4 -0
- package/core/useContextBridge.js +20 -0
- package/core/useDepthBuffer.cjs.js +1 -0
- package/core/useDepthBuffer.d.ts +6 -0
- package/core/useDepthBuffer.js +38 -0
- package/core/useEnvironment.cjs.js +1 -0
- package/core/useEnvironment.d.ts +17 -0
- package/core/useEnvironment.js +150 -0
- package/core/useFont.cjs.js +1 -0
- package/core/useFont.d.ts +24 -0
- package/core/useFont.js +24 -0
- package/core/useIntersect.cjs.js +1 -0
- package/core/useIntersect.d.ts +3 -0
- package/core/useIntersect.js +36 -0
- package/core/useSpriteLoader.cjs.js +1 -0
- package/core/useSpriteLoader.d.ts +57 -0
- package/core/useSpriteLoader.js +402 -0
- package/helpers/constants.cjs.js +1 -0
- package/helpers/constants.d.ts +1 -0
- package/helpers/constants.js +6 -0
- package/helpers/deprecated.cjs.js +1 -0
- package/helpers/deprecated.d.ts +5 -0
- package/helpers/deprecated.js +8 -0
- package/helpers/environment-assets.cjs.js +1 -0
- package/helpers/environment-assets.d.ts +13 -0
- package/helpers/environment-assets.js +14 -0
- package/helpers/glsl/DefaultSpotlightShadowShadows.glsl.js +3 -0
- package/helpers/glsl/distort.vert.glsl.js +3 -0
- package/helpers/ts-utils.cjs.js +1 -0
- package/helpers/ts-utils.d.ts +7 -0
- package/helpers/ts-utils.js +1 -0
- package/helpers/useEffectfulState.cjs.js +1 -0
- package/helpers/useEffectfulState.d.ts +4 -0
- package/helpers/useEffectfulState.js +17 -0
- package/index.cjs.js +1 -0
- package/index.d.ts +1 -0
- package/index.js +139 -0
- package/materials/BlurPass.cjs.js +1 -0
- package/materials/BlurPass.d.ts +23 -0
- package/materials/BlurPass.js +72 -0
- package/materials/ConvolutionMaterial.cjs.js +1 -0
- package/materials/ConvolutionMaterial.d.ts +7 -0
- package/materials/ConvolutionMaterial.js +97 -0
- package/materials/DiscardMaterial.cjs.js +1 -0
- package/materials/DiscardMaterial.d.ts +3 -0
- package/materials/DiscardMaterial.js +5 -0
- package/materials/MeshReflectorMaterial.cjs.js +1 -0
- package/materials/MeshReflectorMaterial.d.ts +50 -0
- package/materials/MeshReflectorMaterial.js +256 -0
- package/materials/MeshRefractionMaterial.cjs.js +1 -0
- package/materials/MeshRefractionMaterial.d.ts +18 -0
- package/materials/MeshRefractionMaterial.js +163 -0
- package/materials/SpotLightMaterial.cjs.js +1 -0
- package/materials/SpotLightMaterial.d.ts +4 -0
- package/materials/SpotLightMaterial.js +115 -0
- package/materials/WireframeMaterial.cjs.js +1 -0
- package/materials/WireframeMaterial.d.ts +64 -0
- package/materials/WireframeMaterial.js +217 -0
- package/native/index.cjs.js +1 -0
- package/native/index.d.ts +1 -0
- package/native/index.js +150 -0
- package/native/package.json +5 -0
- package/package.json +83 -0
- package/web/CycleRaycast.cjs.js +1 -0
- package/web/CycleRaycast.d.ts +10 -0
- package/web/CycleRaycast.js +93 -0
- package/web/DragControls.cjs.js +1 -0
- package/web/DragControls.d.ts +17 -0
- package/web/DragControls.js +127 -0
- package/web/FaceControls.cjs.js +1 -0
- package/web/FaceControls.d.ts +29 -0
- package/web/FaceControls.js +236 -0
- package/web/FaceLandmarker.cjs.js +1 -0
- package/web/FaceLandmarker.d.ts +14 -0
- package/web/FaceLandmarker.js +49 -0
- package/web/Facemesh.cjs.js +1 -0
- package/web/Facemesh.d.ts +118 -0
- package/web/Facemesh.js +4538 -0
- package/web/Html.cjs.js +1 -0
- package/web/Html.d.ts +34 -0
- package/web/Html.js +375 -0
- package/web/KeyboardControls.cjs.js +1 -0
- package/web/KeyboardControls.d.ts +37 -0
- package/web/KeyboardControls.js +104 -0
- package/web/Loader.cjs.js +1 -0
- package/web/Loader.d.ts +12 -0
- package/web/Loader.js +101 -0
- package/web/PresentationControls.cjs.js +1 -0
- package/web/PresentationControls.d.ts +16 -0
- package/web/PresentationControls.js +79 -0
- package/web/ScreenVideoTexture.cjs.js +1 -0
- package/web/ScreenVideoTexture.d.ts +17 -0
- package/web/ScreenVideoTexture.js +30 -0
- package/web/ScrollControls.cjs.js +1 -0
- package/web/ScrollControls.d.ts +45 -0
- package/web/ScrollControls.js +237 -0
- package/web/Select.cjs.js +1 -0
- package/web/Select.d.ts +14 -0
- package/web/Select.js +171 -0
- package/web/View.cjs.js +1 -0
- package/web/View.d.ts +34 -0
- package/web/View.js +259 -0
- package/web/WebcamVideoTexture.cjs.js +1 -0
- package/web/WebcamVideoTexture.d.ts +17 -0
- package/web/WebcamVideoTexture.js +33 -0
- package/web/index.cjs.js +1 -0
- package/web/index.d.ts +17 -0
- package/web/index.js +176 -0
- package/web/pivotControls/AxisArrow.cjs.js +1 -0
- package/web/pivotControls/AxisArrow.d.ts +7 -0
- package/web/pivotControls/AxisArrow.js +193 -0
- package/web/pivotControls/AxisRotator.cjs.js +1 -0
- package/web/pivotControls/AxisRotator.d.ts +7 -0
- package/web/pivotControls/AxisRotator.js +220 -0
- package/web/pivotControls/PlaneSlider.cjs.js +1 -0
- package/web/pivotControls/PlaneSlider.d.ts +7 -0
- package/web/pivotControls/PlaneSlider.js +202 -0
- package/web/pivotControls/ScalingSphere.cjs.js +1 -0
- package/web/pivotControls/ScalingSphere.d.ts +7 -0
- package/web/pivotControls/ScalingSphere.js +192 -0
- package/web/pivotControls/context.cjs.js +1 -0
- package/web/pivotControls/context.d.ts +33 -0
- package/web/pivotControls/context.js +5 -0
- package/web/pivotControls/index.cjs.js +1 -0
- package/web/pivotControls/index.d.ts +39 -0
- package/web/pivotControls/index.js +213 -0
- package/web/useCursor.cjs.js +1 -0
- package/web/useCursor.d.ts +1 -0
- package/web/useCursor.js +12 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PositionalAudio as PositionalAudioImpl } from 'three';
|
|
2
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
3
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
+
export type PositionalAudioProps = Omit<ThreeElements['positionalAudio'], 'ref' | 'args'> & {
|
|
5
|
+
url: string;
|
|
6
|
+
distance?: number;
|
|
7
|
+
loop?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const PositionalAudio: ForwardRefComponent<PositionalAudioProps, PositionalAudioImpl>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { AudioListener, AudioLoader } from 'three';
|
|
4
|
+
import { useThree, useLoader } from '@react-three/fiber';
|
|
5
|
+
|
|
6
|
+
const PositionalAudio = /* @__PURE__ */React.forwardRef(({
|
|
7
|
+
url,
|
|
8
|
+
distance = 1,
|
|
9
|
+
loop = true,
|
|
10
|
+
autoplay,
|
|
11
|
+
...props
|
|
12
|
+
}, ref) => {
|
|
13
|
+
const sound = React.useRef(null);
|
|
14
|
+
React.useImperativeHandle(ref, () => sound.current, []);
|
|
15
|
+
const camera = useThree(({
|
|
16
|
+
camera
|
|
17
|
+
}) => camera);
|
|
18
|
+
const [listener] = React.useState(() => new AudioListener());
|
|
19
|
+
const buffer = useLoader(AudioLoader, url);
|
|
20
|
+
React.useEffect(() => {
|
|
21
|
+
const _sound = sound.current;
|
|
22
|
+
if (_sound) {
|
|
23
|
+
_sound.setBuffer(buffer);
|
|
24
|
+
_sound.setRefDistance(distance);
|
|
25
|
+
_sound.setLoop(loop);
|
|
26
|
+
if (autoplay && !_sound.isPlaying) _sound.play();
|
|
27
|
+
}
|
|
28
|
+
}, [buffer, camera, distance, loop]);
|
|
29
|
+
React.useEffect(() => {
|
|
30
|
+
const _sound = sound.current;
|
|
31
|
+
camera.add(listener);
|
|
32
|
+
return () => {
|
|
33
|
+
camera.remove(listener);
|
|
34
|
+
if (_sound) {
|
|
35
|
+
if (_sound.isPlaying) _sound.stop();
|
|
36
|
+
if (_sound.source && _sound.source._connected) _sound.disconnect();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}, []);
|
|
40
|
+
return /*#__PURE__*/React.createElement("positionalAudio", _extends({
|
|
41
|
+
ref: sound,
|
|
42
|
+
args: [listener]
|
|
43
|
+
}, props));
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export { PositionalAudio };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber");function u(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var c=u(r);exports.Preload=function({all:r,scene:u,camera:n}){const a=t.useThree((({gl:e})=>e)),s=t.useThree((({camera:e})=>e)),i=t.useThree((({scene:e})=>e));return c.useLayoutEffect((()=>{const t=[];r&&(u||i).traverse((e=>{!1===e.visible&&(t.push(e),e.visible=!0)})),a.compile(u||i,n||s);const c=new e.WebGLCubeRenderTarget(128);new e.CubeCamera(.01,1e5,c).update(a,u||i),c.dispose(),t.forEach((e=>e.visible=!1))}),[]),null};
|
package/core/Preload.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { WebGLCubeRenderTarget, CubeCamera } from 'three';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useThree } from '@react-three/fiber';
|
|
4
|
+
|
|
5
|
+
function Preload({
|
|
6
|
+
all,
|
|
7
|
+
scene,
|
|
8
|
+
camera
|
|
9
|
+
}) {
|
|
10
|
+
const gl = useThree(({
|
|
11
|
+
gl
|
|
12
|
+
}) => gl);
|
|
13
|
+
const dCamera = useThree(({
|
|
14
|
+
camera
|
|
15
|
+
}) => camera);
|
|
16
|
+
const dScene = useThree(({
|
|
17
|
+
scene
|
|
18
|
+
}) => scene);
|
|
19
|
+
|
|
20
|
+
// Layout effect because it must run before React commits
|
|
21
|
+
React.useLayoutEffect(() => {
|
|
22
|
+
const invisible = [];
|
|
23
|
+
if (all) {
|
|
24
|
+
(scene || dScene).traverse(object => {
|
|
25
|
+
if (object.visible === false) {
|
|
26
|
+
invisible.push(object);
|
|
27
|
+
object.visible = true;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// Now compile the scene
|
|
32
|
+
gl.compile(scene || dScene, camera || dCamera);
|
|
33
|
+
// And for good measure, hit it with a cube camera
|
|
34
|
+
const cubeRenderTarget = new WebGLCubeRenderTarget(128);
|
|
35
|
+
const cubeCamera = new CubeCamera(0.01, 100000, cubeRenderTarget);
|
|
36
|
+
cubeCamera.update(gl, scene || dScene);
|
|
37
|
+
cubeRenderTarget.dispose();
|
|
38
|
+
// Flips these objects back
|
|
39
|
+
invisible.forEach(object => object.visible = false);
|
|
40
|
+
}, []);
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { Preload };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("three"),t=require("zustand");function a(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var o=a(e);let n=0;const s=t.create((e=>(r.DefaultLoadingManager.onStart=(r,t,a)=>{e({active:!0,item:r,loaded:t,total:a,progress:(t-n)/(a-n)*100})},r.DefaultLoadingManager.onLoad=()=>{e({active:!1})},r.DefaultLoadingManager.onError=r=>e((e=>({errors:[...e.errors,r]}))),r.DefaultLoadingManager.onProgress=(r,t,a)=>{t===a&&(n=a),e({active:!0,item:r,loaded:t,total:a,progress:(t-n)/(a-n)*100||100})},{errors:[],active:!1,progress:0,item:"",loaded:0,total:0})));exports.Progress=function({children:e}){const r=s();return o.createElement(o.Fragment,null,null==e?void 0:e(r))},exports.useProgress=s;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type Data = {
|
|
3
|
+
errors: string[];
|
|
4
|
+
active: boolean;
|
|
5
|
+
progress: number;
|
|
6
|
+
item: string;
|
|
7
|
+
loaded: number;
|
|
8
|
+
total: number;
|
|
9
|
+
};
|
|
10
|
+
declare const useProgress: import("zustand").UseBoundStore<import("zustand").StoreApi<Data>>;
|
|
11
|
+
export { useProgress };
|
|
12
|
+
export declare function Progress({ children }: {
|
|
13
|
+
children?: (result: Data) => React.ReactNode;
|
|
14
|
+
}): React.JSX.Element;
|
package/core/Progress.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { DefaultLoadingManager } from 'three';
|
|
3
|
+
import { create } from 'zustand';
|
|
4
|
+
|
|
5
|
+
let saveLastTotalLoaded = 0;
|
|
6
|
+
const useProgress = /* @__PURE__ */create(set => {
|
|
7
|
+
DefaultLoadingManager.onStart = (item, loaded, total) => {
|
|
8
|
+
set({
|
|
9
|
+
active: true,
|
|
10
|
+
item,
|
|
11
|
+
loaded,
|
|
12
|
+
total,
|
|
13
|
+
progress: (loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded) * 100
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
DefaultLoadingManager.onLoad = () => {
|
|
17
|
+
set({
|
|
18
|
+
active: false
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
DefaultLoadingManager.onError = item => set(state => ({
|
|
22
|
+
errors: [...state.errors, item]
|
|
23
|
+
}));
|
|
24
|
+
DefaultLoadingManager.onProgress = (item, loaded, total) => {
|
|
25
|
+
if (loaded === total) {
|
|
26
|
+
saveLastTotalLoaded = total;
|
|
27
|
+
}
|
|
28
|
+
set({
|
|
29
|
+
active: true,
|
|
30
|
+
item,
|
|
31
|
+
loaded,
|
|
32
|
+
total,
|
|
33
|
+
progress: (loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded) * 100 || 100
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
errors: [],
|
|
38
|
+
active: false,
|
|
39
|
+
progress: 0,
|
|
40
|
+
item: '',
|
|
41
|
+
loaded: 0,
|
|
42
|
+
total: 0
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
//
|
|
47
|
+
|
|
48
|
+
function Progress({
|
|
49
|
+
children
|
|
50
|
+
}) {
|
|
51
|
+
const result = useProgress();
|
|
52
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, children == null ? void 0 : children(result));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export { Progress, useProgress };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("./Line.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("three-stdlib");var u=o(e),s=c(t);const i=new r.Vector3,a=s.forwardRef((function({start:e=[0,0,0],end:t=[0,0,0],mid:o,segments:c=20,...a},f){const d=s.useRef(null);s.useImperativeHandle(f,(()=>d.current));const[l]=s.useState((()=>new r.QuadraticBezierCurve3(void 0,void 0,void 0))),v=s.useCallback(((e,t,n,o=20)=>(e instanceof r.Vector3?l.v0.copy(e):l.v0.set(...e),t instanceof r.Vector3?l.v2.copy(t):l.v2.set(...t),n instanceof r.Vector3?l.v1.copy(n):Array.isArray(n)?l.v1.set(...n):l.v1.copy(l.v0.clone().add(l.v2.clone().sub(l.v0)).add(i.set(0,l.v0.y-l.v2.y,0))),l.getPoints(o))),[]);s.useLayoutEffect((()=>{d.current.setPoints=(e,t,r)=>{const n=v(e,t,r);d.current.geometry&&d.current.geometry.setPositions(n.map((e=>e.toArray())).flat())}}),[]);const y=s.useMemo((()=>v(e,t,o,c)),[e,t,o,c]);return s.createElement(n.Line,u.default({ref:d,points:y},a))}));exports.QuadraticBezierLine=a;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Vector3 } from 'three';
|
|
2
|
+
import { Line2 } from 'three-stdlib';
|
|
3
|
+
import { LineProps } from './Line';
|
|
4
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
+
export type QuadraticBezierLineRef = Line2 & {
|
|
6
|
+
setPoints(start: Vector3 | [number, number, number], end: Vector3 | [number, number, number], mid: Vector3 | [number, number, number]): void;
|
|
7
|
+
};
|
|
8
|
+
export type QuadraticBezierLineProps = Omit<LineProps, 'points' | 'ref'> & {
|
|
9
|
+
start: Vector3 | [number, number, number];
|
|
10
|
+
end: Vector3 | [number, number, number];
|
|
11
|
+
mid?: Vector3 | [number, number, number];
|
|
12
|
+
segments?: number;
|
|
13
|
+
};
|
|
14
|
+
export declare const QuadraticBezierLine: ForwardRefComponent<QuadraticBezierLineProps, QuadraticBezierLineRef>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { QuadraticBezierCurve3, Vector3 } from 'three';
|
|
4
|
+
import { Line } from './Line.js';
|
|
5
|
+
|
|
6
|
+
const v = /* @__PURE__ */new Vector3();
|
|
7
|
+
const QuadraticBezierLine = /* @__PURE__ */React.forwardRef(function QuadraticBezierLine({
|
|
8
|
+
start = [0, 0, 0],
|
|
9
|
+
end = [0, 0, 0],
|
|
10
|
+
mid,
|
|
11
|
+
segments = 20,
|
|
12
|
+
...rest
|
|
13
|
+
}, forwardref) {
|
|
14
|
+
const ref = React.useRef(null);
|
|
15
|
+
React.useImperativeHandle(forwardref, () => ref.current);
|
|
16
|
+
const [curve] = React.useState(() => new QuadraticBezierCurve3(undefined, undefined, undefined));
|
|
17
|
+
const getPoints = React.useCallback((start, end, mid, segments = 20) => {
|
|
18
|
+
if (start instanceof Vector3) curve.v0.copy(start);else curve.v0.set(...start);
|
|
19
|
+
if (end instanceof Vector3) curve.v2.copy(end);else curve.v2.set(...end);
|
|
20
|
+
if (mid instanceof Vector3) {
|
|
21
|
+
curve.v1.copy(mid);
|
|
22
|
+
} else if (Array.isArray(mid)) {
|
|
23
|
+
curve.v1.set(...mid);
|
|
24
|
+
} else {
|
|
25
|
+
curve.v1.copy(curve.v0.clone().add(curve.v2.clone().sub(curve.v0)).add(v.set(0, curve.v0.y - curve.v2.y, 0)));
|
|
26
|
+
}
|
|
27
|
+
return curve.getPoints(segments);
|
|
28
|
+
}, []);
|
|
29
|
+
React.useLayoutEffect(() => {
|
|
30
|
+
ref.current.setPoints = (start, end, mid) => {
|
|
31
|
+
const points = getPoints(start, end, mid);
|
|
32
|
+
if (ref.current.geometry) ref.current.geometry.setPositions(points.map(p => p.toArray()).flat());
|
|
33
|
+
};
|
|
34
|
+
}, []);
|
|
35
|
+
const points = React.useMemo(() => getPoints(start, end, mid, segments), [start, end, mid, segments]);
|
|
36
|
+
return /*#__PURE__*/React.createElement(Line, _extends({
|
|
37
|
+
ref: ref,
|
|
38
|
+
points: points
|
|
39
|
+
}, rest));
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export { QuadraticBezierLine };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var i=a(e),o=u(r),c=u(t);const l=c.forwardRef((({children:e,compute:r,renderPriority:t=-1,eventPriority:a=0,frames:u=1/0,stencilBuffer:l=!1,depthBuffer:f=!0,generateMipmaps:p=!1,resolution:m=896,near:d=.1,far:b=1e3,flip:x=!1,position:g,rotation:h,scale:y,quaternion:v,matrix:P,matrixAutoUpdate:j,...E},O)=>{const{size:q,viewport:w}=n.useThree(),M=c.useRef(null),T=c.useMemo((()=>{const e=new o.WebGLCubeRenderTarget(Math.max((m||q.width)*w.dpr,(m||q.height)*w.dpr),{stencilBuffer:l,depthBuffer:f,generateMipmaps:p});return e.texture.isRenderTargetTexture=!x,e.texture.flipY=!0,e.texture.type=o.HalfFloatType,e}),[m,x]);c.useEffect((()=>()=>T.dispose()),[T]);const[R]=c.useState((()=>new o.Scene));return c.useImperativeHandle(O,(()=>({scene:R,fbo:T,camera:M.current})),[T]),c.createElement(c.Fragment,null,n.createPortal(c.createElement(s,{renderPriority:t,frames:u,camera:M},e,c.createElement("group",{onPointerOver:()=>null})),R,{events:{compute:r,priority:a}}),c.createElement("primitive",i.default({object:T.texture},E)),c.createElement("cubeCamera",{ref:M,args:[d,b,T],position:g,rotation:h,scale:y,quaternion:v,matrix:P,matrixAutoUpdate:j}))}));function s({frames:e,renderPriority:r,children:t,camera:a}){let u=0;return n.useFrame((r=>{(e===1/0||u<e)&&(a.current.update(r.gl,r.scene),u++)}),r),c.createElement(c.Fragment,null,t)}exports.RenderCubeTexture=l;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ComputeFunction, ReactThreeFiber, ThreeElements } from '@react-three/fiber';
|
|
4
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
+
export type RenderCubeTextureProps = Omit<ThreeElements['texture'], 'ref' | 'args' | 'rotation'> & {
|
|
6
|
+
stencilBuffer?: boolean;
|
|
7
|
+
depthBuffer?: boolean;
|
|
8
|
+
generateMipmaps?: boolean;
|
|
9
|
+
renderPriority?: number;
|
|
10
|
+
eventPriority?: number;
|
|
11
|
+
frames?: number;
|
|
12
|
+
compute?: ComputeFunction;
|
|
13
|
+
flip?: boolean;
|
|
14
|
+
resolution?: number;
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
near?: number;
|
|
17
|
+
far?: number;
|
|
18
|
+
position?: ReactThreeFiber.Vector3;
|
|
19
|
+
rotation?: ReactThreeFiber.Euler;
|
|
20
|
+
scale?: ReactThreeFiber.Vector3;
|
|
21
|
+
quaternion?: ReactThreeFiber.Quaternion;
|
|
22
|
+
matrix?: ReactThreeFiber.Matrix4;
|
|
23
|
+
matrixAutoUpdate?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export type RenderCubeTextureApi = {
|
|
26
|
+
scene: THREE.Scene;
|
|
27
|
+
fbo: THREE.WebGLCubeRenderTarget;
|
|
28
|
+
camera: THREE.CubeCamera;
|
|
29
|
+
};
|
|
30
|
+
export declare const RenderCubeTexture: ForwardRefComponent<RenderCubeTextureProps, RenderCubeTextureApi>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { useThree, createPortal, useFrame } from '@react-three/fiber';
|
|
5
|
+
|
|
6
|
+
const RenderCubeTexture = /* @__PURE__ */React.forwardRef(({
|
|
7
|
+
children,
|
|
8
|
+
compute,
|
|
9
|
+
renderPriority = -1,
|
|
10
|
+
eventPriority = 0,
|
|
11
|
+
frames = Infinity,
|
|
12
|
+
stencilBuffer = false,
|
|
13
|
+
depthBuffer = true,
|
|
14
|
+
generateMipmaps = false,
|
|
15
|
+
resolution = 896,
|
|
16
|
+
near = 0.1,
|
|
17
|
+
far = 1000,
|
|
18
|
+
flip = false,
|
|
19
|
+
position,
|
|
20
|
+
rotation,
|
|
21
|
+
scale,
|
|
22
|
+
quaternion,
|
|
23
|
+
matrix,
|
|
24
|
+
matrixAutoUpdate,
|
|
25
|
+
...props
|
|
26
|
+
}, forwardRef) => {
|
|
27
|
+
const {
|
|
28
|
+
size,
|
|
29
|
+
viewport
|
|
30
|
+
} = useThree();
|
|
31
|
+
const camera = React.useRef(null);
|
|
32
|
+
const fbo = React.useMemo(() => {
|
|
33
|
+
const fbo = new THREE.WebGLCubeRenderTarget(Math.max((resolution || size.width) * viewport.dpr, (resolution || size.height) * viewport.dpr), {
|
|
34
|
+
stencilBuffer,
|
|
35
|
+
depthBuffer,
|
|
36
|
+
generateMipmaps
|
|
37
|
+
});
|
|
38
|
+
fbo.texture.isRenderTargetTexture = !flip;
|
|
39
|
+
fbo.texture.flipY = true;
|
|
40
|
+
fbo.texture.type = THREE.HalfFloatType;
|
|
41
|
+
return fbo;
|
|
42
|
+
}, [resolution, flip]);
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
return () => fbo.dispose();
|
|
45
|
+
}, [fbo]);
|
|
46
|
+
const [vScene] = React.useState(() => new THREE.Scene());
|
|
47
|
+
React.useImperativeHandle(forwardRef, () => ({
|
|
48
|
+
scene: vScene,
|
|
49
|
+
fbo,
|
|
50
|
+
camera: camera.current
|
|
51
|
+
}), [fbo]);
|
|
52
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, createPortal(/*#__PURE__*/React.createElement(Container, {
|
|
53
|
+
renderPriority: renderPriority,
|
|
54
|
+
frames: frames,
|
|
55
|
+
camera: camera
|
|
56
|
+
}, children, /*#__PURE__*/React.createElement("group", {
|
|
57
|
+
onPointerOver: () => null
|
|
58
|
+
})), vScene, {
|
|
59
|
+
events: {
|
|
60
|
+
compute,
|
|
61
|
+
priority: eventPriority
|
|
62
|
+
}
|
|
63
|
+
}), /*#__PURE__*/React.createElement("primitive", _extends({
|
|
64
|
+
object: fbo.texture
|
|
65
|
+
}, props)), /*#__PURE__*/React.createElement("cubeCamera", {
|
|
66
|
+
ref: camera,
|
|
67
|
+
args: [near, far, fbo],
|
|
68
|
+
position: position,
|
|
69
|
+
rotation: rotation,
|
|
70
|
+
scale: scale,
|
|
71
|
+
quaternion: quaternion,
|
|
72
|
+
matrix: matrix,
|
|
73
|
+
matrixAutoUpdate: matrixAutoUpdate
|
|
74
|
+
}));
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// The container component has to be separate, it can not be inlined because "useFrame(state" when run inside createPortal will return
|
|
78
|
+
// the portals own state which includes user-land overrides (custom cameras etc), but if it is executed in <RenderTexture>'s render function
|
|
79
|
+
// it would return the default state.
|
|
80
|
+
function Container({
|
|
81
|
+
frames,
|
|
82
|
+
renderPriority,
|
|
83
|
+
children,
|
|
84
|
+
camera
|
|
85
|
+
}) {
|
|
86
|
+
let count = 0;
|
|
87
|
+
useFrame(state => {
|
|
88
|
+
if (frames === Infinity || count < frames) {
|
|
89
|
+
camera.current.update(state.gl, state.scene);
|
|
90
|
+
count++;
|
|
91
|
+
}
|
|
92
|
+
}, renderPriority);
|
|
93
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export { RenderCubeTexture };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./Fbo.cjs.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=l(e),o=i(r),s=i(t);const c=s.forwardRef((({children:e,compute:r,width:t,height:l,samples:i=8,renderPriority:c=0,eventPriority:d=0,frames:g=1/0,stencilBuffer:p=!1,depthBuffer:m=!0,generateMipmaps:b=!1,...v},h)=>{const{size:j,viewport:x}=n.useThree(),y=a.useFBO((t||j.width)*x.dpr,(l||j.height)*x.dpr,{samples:i,stencilBuffer:p,depthBuffer:m,generateMipmaps:b}),[P]=s.useState((()=>new o.Scene)),O=s.useCallback(((e,r,t)=>{var n,a;let l=null==(n=y.texture)||null==(n=n.__r3f.parent)?void 0:n.object;for(;l&&!(l instanceof o.Object3D);){var i;l=null==(i=l.__r3f.parent)?void 0:i.object}if(!l)return!1;t.raycaster.camera||t.events.compute(e,t,null==(a=t.previousRoot)?void 0:a.getState());const[u]=t.raycaster.intersectObject(l);if(!u)return!1;const s=u.uv;if(!s)return!1;r.raycaster.setFromCamera(r.pointer.set(2*s.x-1,2*s.y-1),r.camera)}),[]);return s.useImperativeHandle(h,(()=>y.texture),[y]),s.createElement(s.Fragment,null,n.createPortal(s.createElement(f,{renderPriority:c,frames:g,fbo:y},e,s.createElement("group",{onPointerOver:()=>null})),P,{events:{compute:r||O,priority:d}}),s.createElement("primitive",u.default({object:y.texture},v)))}));function f({frames:e,renderPriority:r,children:t,fbo:a}){let l,i,u,o,c=0;return n.useFrame((r=>{(e===1/0||c<e)&&(l=r.gl.autoClear,i=r.gl.xr.enabled,u=r.gl.getRenderTarget(),o=r.gl.xr.isPresenting,r.gl.autoClear=!0,r.gl.xr.enabled=!1,r.gl.xr.isPresenting=!1,r.gl.setRenderTarget(a),r.gl.render(r.scene,r.camera),r.gl.setRenderTarget(u),r.gl.autoClear=l,r.gl.xr.enabled=i,r.gl.xr.isPresenting=o,c++)}),r),s.createElement(s.Fragment,null,t)}exports.RenderTexture=c;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
4
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
+
export type RenderTextureProps = Omit<ThreeElements['texture'], 'ref' | 'args'> & {
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
samples?: number;
|
|
9
|
+
stencilBuffer?: boolean;
|
|
10
|
+
depthBuffer?: boolean;
|
|
11
|
+
generateMipmaps?: boolean;
|
|
12
|
+
renderPriority?: number;
|
|
13
|
+
eventPriority?: number;
|
|
14
|
+
frames?: number;
|
|
15
|
+
compute?: (event: any, state: any, previous: any) => false | undefined;
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
};
|
|
18
|
+
export declare const RenderTexture: ForwardRefComponent<RenderTextureProps, THREE.Texture>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { useThree, createPortal, useFrame } from '@react-three/fiber';
|
|
5
|
+
import { useFBO } from './Fbo.js';
|
|
6
|
+
|
|
7
|
+
const RenderTexture = /* @__PURE__ */React.forwardRef(({
|
|
8
|
+
children,
|
|
9
|
+
compute,
|
|
10
|
+
width,
|
|
11
|
+
height,
|
|
12
|
+
samples = 8,
|
|
13
|
+
renderPriority = 0,
|
|
14
|
+
eventPriority = 0,
|
|
15
|
+
frames = Infinity,
|
|
16
|
+
stencilBuffer = false,
|
|
17
|
+
depthBuffer = true,
|
|
18
|
+
generateMipmaps = false,
|
|
19
|
+
...props
|
|
20
|
+
}, forwardRef) => {
|
|
21
|
+
const {
|
|
22
|
+
size,
|
|
23
|
+
viewport
|
|
24
|
+
} = useThree();
|
|
25
|
+
const fbo = useFBO((width || size.width) * viewport.dpr, (height || size.height) * viewport.dpr, {
|
|
26
|
+
samples,
|
|
27
|
+
stencilBuffer,
|
|
28
|
+
depthBuffer,
|
|
29
|
+
generateMipmaps
|
|
30
|
+
});
|
|
31
|
+
const [vScene] = React.useState(() => new THREE.Scene());
|
|
32
|
+
const uvCompute = React.useCallback((event, state, previous) => {
|
|
33
|
+
var _fbo$texture, _previous$previousRoo;
|
|
34
|
+
// Since this is only a texture it does not have an easy way to obtain the parent, which we
|
|
35
|
+
// need to transform event coordinates to local coordinates. We use r3f internals to find the
|
|
36
|
+
// next Object3D.
|
|
37
|
+
let parent = (_fbo$texture = fbo.texture) == null || (_fbo$texture = _fbo$texture.__r3f.parent) == null ? void 0 : _fbo$texture.object;
|
|
38
|
+
while (parent && !(parent instanceof THREE.Object3D)) {
|
|
39
|
+
var _parent$__r3f$parent;
|
|
40
|
+
parent = (_parent$__r3f$parent = parent.__r3f.parent) == null ? void 0 : _parent$__r3f$parent.object;
|
|
41
|
+
}
|
|
42
|
+
if (!parent) return false;
|
|
43
|
+
// First we call the previous state-onion-layers compute, this is what makes it possible to nest portals
|
|
44
|
+
if (!previous.raycaster.camera) previous.events.compute(event, previous, (_previous$previousRoo = previous.previousRoot) == null ? void 0 : _previous$previousRoo.getState());
|
|
45
|
+
// We run a quick check against the parent, if it isn't hit there's no need to raycast at all
|
|
46
|
+
const [intersection] = previous.raycaster.intersectObject(parent);
|
|
47
|
+
if (!intersection) return false;
|
|
48
|
+
// We take that hits uv coords, set up this layers raycaster, et voilà, we have raycasting on arbitrary surfaces
|
|
49
|
+
const uv = intersection.uv;
|
|
50
|
+
if (!uv) return false;
|
|
51
|
+
state.raycaster.setFromCamera(state.pointer.set(uv.x * 2 - 1, uv.y * 2 - 1), state.camera);
|
|
52
|
+
}, []);
|
|
53
|
+
React.useImperativeHandle(forwardRef, () => fbo.texture, [fbo]);
|
|
54
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, createPortal(/*#__PURE__*/React.createElement(Container, {
|
|
55
|
+
renderPriority: renderPriority,
|
|
56
|
+
frames: frames,
|
|
57
|
+
fbo: fbo
|
|
58
|
+
}, children, /*#__PURE__*/React.createElement("group", {
|
|
59
|
+
onPointerOver: () => null
|
|
60
|
+
})), vScene, {
|
|
61
|
+
events: {
|
|
62
|
+
compute: compute || uvCompute,
|
|
63
|
+
priority: eventPriority
|
|
64
|
+
}
|
|
65
|
+
}), /*#__PURE__*/React.createElement("primitive", _extends({
|
|
66
|
+
object: fbo.texture
|
|
67
|
+
}, props)));
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// The container component has to be separate, it can not be inlined because "useFrame(state" when run inside createPortal will return
|
|
71
|
+
// the portals own state which includes user-land overrides (custom cameras etc), but if it is executed in <RenderTexture>'s render function
|
|
72
|
+
// it would return the default state.
|
|
73
|
+
function Container({
|
|
74
|
+
frames,
|
|
75
|
+
renderPriority,
|
|
76
|
+
children,
|
|
77
|
+
fbo
|
|
78
|
+
}) {
|
|
79
|
+
let count = 0;
|
|
80
|
+
let oldAutoClear;
|
|
81
|
+
let oldXrEnabled;
|
|
82
|
+
let oldRenderTarget;
|
|
83
|
+
let oldIsPresenting;
|
|
84
|
+
useFrame(state => {
|
|
85
|
+
if (frames === Infinity || count < frames) {
|
|
86
|
+
oldAutoClear = state.gl.autoClear;
|
|
87
|
+
oldXrEnabled = state.gl.xr.enabled;
|
|
88
|
+
oldRenderTarget = state.gl.getRenderTarget();
|
|
89
|
+
oldIsPresenting = state.gl.xr.isPresenting;
|
|
90
|
+
state.gl.autoClear = true;
|
|
91
|
+
state.gl.xr.enabled = false;
|
|
92
|
+
state.gl.xr.isPresenting = false;
|
|
93
|
+
state.gl.setRenderTarget(fbo);
|
|
94
|
+
state.gl.render(state.scene, state.camera);
|
|
95
|
+
state.gl.setRenderTarget(oldRenderTarget);
|
|
96
|
+
state.gl.autoClear = oldAutoClear;
|
|
97
|
+
state.gl.xr.enabled = oldXrEnabled;
|
|
98
|
+
state.gl.xr.isPresenting = oldIsPresenting;
|
|
99
|
+
count++;
|
|
100
|
+
}
|
|
101
|
+
}, renderPriority);
|
|
102
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export { RenderTexture };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=n(e),a=u(t),l=u(r);const i=l.forwardRef((({children:e,width:t,height:r,depth:n,box3:u,precise:i=!0,...o},f)=>{const s=l.useRef(null),d=l.useRef(null),m=l.useRef(null);return l.useLayoutEffect((()=>{d.current.matrixWorld.identity();let e=u||(new a.Box3).setFromObject(m.current,i);const c=e.max.x-e.min.x,l=e.max.y-e.min.y,o=e.max.z-e.min.z;let f=Math.max(c,l,o);t&&(f=c),r&&(f=l),n&&(f=o),d.current.scale.setScalar(1/f)}),[t,r,n,u,i]),l.useImperativeHandle(f,(()=>s.current),[]),l.createElement("group",c.default({ref:s},o),l.createElement("group",{ref:d},l.createElement("group",{ref:m},e)))}));exports.Resize=i;
|
package/core/Resize.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
4
|
+
export type ResizeProps = Omit<ThreeElements['group'], 'ref'> & {
|
|
5
|
+
width?: boolean;
|
|
6
|
+
height?: boolean;
|
|
7
|
+
depth?: boolean;
|
|
8
|
+
box3?: THREE.Box3;
|
|
9
|
+
precise?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const Resize: React.ForwardRefExoticComponent<Omit<import("@react-three/fiber/dist/declarations/src/core/utils").Mutable<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<Partial<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<THREE.Group<THREE.Object3DEventMap>, import("@react-three/fiber").MathProps<THREE.Group<THREE.Object3DEventMap>> & import("@react-three/fiber").ReactProps<THREE.Group<THREE.Object3DEventMap>> & Partial<import("@react-three/fiber").EventHandlers>>>, Omit<import("@react-three/fiber").InstanceProps<THREE.Group<THREE.Object3DEventMap>, typeof THREE.Group>, "object">>>, "ref"> & {
|
|
12
|
+
width?: boolean;
|
|
13
|
+
height?: boolean;
|
|
14
|
+
depth?: boolean;
|
|
15
|
+
box3?: THREE.Box3;
|
|
16
|
+
precise?: boolean;
|
|
17
|
+
} & React.RefAttributes<THREE.Group<THREE.Object3DEventMap>>>;
|
package/core/Resize.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
|
|
5
|
+
const Resize = /* @__PURE__ */React.forwardRef(({
|
|
6
|
+
children,
|
|
7
|
+
width,
|
|
8
|
+
height,
|
|
9
|
+
depth,
|
|
10
|
+
box3,
|
|
11
|
+
precise = true,
|
|
12
|
+
...props
|
|
13
|
+
}, fRef) => {
|
|
14
|
+
const ref = React.useRef(null);
|
|
15
|
+
const outer = React.useRef(null);
|
|
16
|
+
const inner = React.useRef(null);
|
|
17
|
+
React.useLayoutEffect(() => {
|
|
18
|
+
outer.current.matrixWorld.identity();
|
|
19
|
+
let box = box3 || new THREE.Box3().setFromObject(inner.current, precise);
|
|
20
|
+
const w = box.max.x - box.min.x;
|
|
21
|
+
const h = box.max.y - box.min.y;
|
|
22
|
+
const d = box.max.z - box.min.z;
|
|
23
|
+
let dimension = Math.max(w, h, d);
|
|
24
|
+
if (width) dimension = w;
|
|
25
|
+
if (height) dimension = h;
|
|
26
|
+
if (depth) dimension = d;
|
|
27
|
+
outer.current.scale.setScalar(1 / dimension);
|
|
28
|
+
}, [width, height, depth, box3, precise]);
|
|
29
|
+
React.useImperativeHandle(fRef, () => ref.current, []);
|
|
30
|
+
return /*#__PURE__*/React.createElement("group", _extends({
|
|
31
|
+
ref: ref
|
|
32
|
+
}, props), /*#__PURE__*/React.createElement("group", {
|
|
33
|
+
ref: outer
|
|
34
|
+
}, /*#__PURE__*/React.createElement("group", {
|
|
35
|
+
ref: inner
|
|
36
|
+
}, children)));
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export { Resize };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),s=require("three-stdlib");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=n(e),c=a(t);const o=1e-5;const l=c.forwardRef((function({args:[e=1,t=1,r=1]=[],radius:s=.05,steps:n=1,smoothness:a=4,bevelSegments:o=4,creaseAngle:l=.4,children:d,...i},b){return c.createElement("mesh",u.default({ref:b},i),c.createElement(f,{args:[e,t,r],radius:s,steps:n,smoothness:a,bevelSegments:o,creaseAngle:l}),d)})),f=c.forwardRef((function({args:[e=1,t=1,n=1]=[],radius:a=.05,steps:l=1,smoothness:f=4,bevelSegments:d=4,creaseAngle:i=.4,...b},m){const h=c.useMemo((()=>function(e,t,s){const n=new r.Shape,a=s-o;return n.absarc(o,o,o,-Math.PI/2,-Math.PI,!0),n.absarc(o,t-2*a,o,Math.PI,Math.PI/2,!0),n.absarc(e-2*a,t-2*a,o,Math.PI/2,0,!0),n.absarc(e-2*a,o,o,0,-Math.PI/2,!0),n}(e,t,a)),[e,t,a]),p=c.useMemo((()=>({depth:n-2*a,bevelEnabled:!0,bevelSegments:2*d,steps:l,bevelSize:a-o,bevelThickness:a,curveSegments:f})),[n,a,f,d,l]),g=c.useRef(null);return c.useLayoutEffect((()=>{g.current&&(g.current.center(),s.toCreasedNormals(g.current,i))}),[h,p,i]),c.useImperativeHandle(m,(()=>g.current)),c.createElement("extrudeGeometry",u.default({ref:g,args:[h,p]},b))}));exports.RoundedBox=l,exports.RoundedBoxGeometry=f;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Mesh, ExtrudeGeometry } from 'three';
|
|
2
|
+
import { ForwardRefComponent, NamedArrayTuple } from '../helpers/ts-utils';
|
|
3
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
4
|
+
export type RoundedBoxProps = {
|
|
5
|
+
args?: NamedArrayTuple<(width?: number, height?: number, depth?: number) => void>;
|
|
6
|
+
radius?: number;
|
|
7
|
+
smoothness?: number;
|
|
8
|
+
bevelSegments?: number;
|
|
9
|
+
steps?: number;
|
|
10
|
+
creaseAngle?: number;
|
|
11
|
+
} & Omit<ThreeElements['mesh'], 'ref' | 'args'>;
|
|
12
|
+
export type RoundedBoxGeometryProps = Omit<RoundedBoxProps, 'children'> & Omit<ThreeElements['extrudeGeometry'], 'args' | 'ref'>;
|
|
13
|
+
export declare const RoundedBox: ForwardRefComponent<RoundedBoxProps, Mesh>;
|
|
14
|
+
export declare const RoundedBoxGeometry: ForwardRefComponent<RoundedBoxGeometryProps, ExtrudeGeometry>;
|