@react-three/drei 9.96.5 → 9.97.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/README.md +82 -9
- package/core/CameraControls.d.ts +2 -2
- package/core/MeshTransmissionMaterial.d.ts +2 -2
- package/core/ScreenSizer.cjs.js +1 -0
- package/core/ScreenSizer.d.ts +7 -0
- package/core/ScreenSizer.js +39 -0
- package/core/SpriteAnimator.cjs.js +1 -1
- package/core/SpriteAnimator.d.ts +2 -1
- package/core/SpriteAnimator.js +34 -123
- 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 -1
- package/core/index.d.ts +3 -0
- package/core/index.js +3 -0
- package/core/useSpriteLoader.cjs.js +1 -0
- package/core/useSpriteLoader.d.ts +9 -0
- package/core/useSpriteLoader.js +215 -0
- package/index.cjs.js +1 -1
- package/index.js +4 -1
- package/native/index.cjs.js +1 -1
- package/native/index.js +3 -0
- package/package.json +1 -1
- package/react-three-drei-0.0.0-semantic-release.tgz +0 -0
- package/web/index.cjs.js +1 -1
- package/web/index.js +5 -2
- package/web/pivotControls/index.cjs.js +1 -1
- package/web/pivotControls/index.d.ts +2 -4
- package/web/pivotControls/index.js +5 -31
package/core/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),a=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),n=require("./Text3D.cjs.js"),c=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),l=require("./Edges.cjs.js"),x=require("./Outlines.cjs.js"),q=require("./Trail.cjs.js"),d=require("./Sampler.cjs.js"),m=require("./ComputedAttribute.cjs.js"),h=require("./Clone.cjs.js"),C=require("./MarchingCubes.cjs.js"),M=require("./Decal.cjs.js"),S=require("./Svg.cjs.js"),T=require("./Gltf.cjs.js"),P=require("./AsciiRenderer.cjs.js"),b=require("./Splat.cjs.js"),f=require("./OrthographicCamera.cjs.js"),B=require("./PerspectiveCamera.cjs.js"),g=require("./CubeCamera.cjs.js"),v=require("./DeviceOrientationControls.cjs.js"),A=require("./FlyControls.cjs.js"),G=require("./MapControls.cjs.js"),L=require("./OrbitControls.cjs.js"),R=require("./TrackballControls.cjs.js"),D=require("./ArcballControls.cjs.js"),E=require("./TransformControls.cjs.js"),k=require("./PointerLockControls.cjs.js"),w=require("./FirstPersonControls.cjs.js"),F=require("./CameraControls.cjs.js"),z=require("./MotionPathControls.cjs.js"),O=require("./GizmoHelper.cjs.js"),I=require("./GizmoViewcube.cjs.js"),y=require("./GizmoViewport.cjs.js"),H=require("./Grid.cjs.js"),V=require("./useCubeTexture.cjs.js"),W=require("./useFBX.cjs.js"),Q=require("./useGLTF.cjs.js"),X=require("./useKTX2.cjs.js"),K=require("./useProgress.cjs.js"),N=require("./useTexture.cjs.js"),U=require("./useVideoTexture.cjs.js"),_=require("./useFont.cjs.js"),J=require("./Stats.cjs.js"),Y=require("./StatsGl.cjs.js"),Z=require("./useDepthBuffer.cjs.js"),$=require("./useAspect.cjs.js"),ee=require("./useCamera.cjs.js"),re=require("./useDetectGPU.cjs.js"),se=require("./useHelper.cjs.js"),te=require("./useBVH.cjs.js"),oe=require("./useContextBridge.cjs.js"),ie=require("./useAnimations.cjs.js"),ae=require("./useFBO.cjs.js"),ue=require("./useIntersect.cjs.js"),ne=require("./useBoxProjectedEnv.cjs.js"),ce=require("./BBAnchor.cjs.js"),je=require("./useTrailTexture.cjs.js"),pe=require("./useCubeCamera.cjs.js"),le=require("./Example.cjs.js"),xe=require("./SpriteAnimator.cjs.js"),qe=require("./CurveModifier.cjs.js"),de=require("./MeshDistortMaterial.cjs.js"),me=require("./MeshWobbleMaterial.cjs.js"),he=require("./MeshReflectorMaterial.cjs.js"),Ce=require("./MeshRefractionMaterial.cjs.js"),Me=require("./MeshTransmissionMaterial.cjs.js"),Se=require("./MeshDiscardMaterial.cjs.js"),Te=require("./PointMaterial.cjs.js"),Pe=require("./shaderMaterial.cjs.js"),be=require("./softShadows.cjs.js"),fe=require("./shapes.cjs.js"),Be=require("./RoundedBox.cjs.js"),ge=require("./ScreenQuad.cjs.js"),ve=require("./Center.cjs.js"),Ae=require("./Resize.cjs.js"),Ge=require("./Bounds.cjs.js"),Le=require("./CameraShake.cjs.js"),Re=require("./Float.cjs.js"),De=require("./Stage.cjs.js"),Ee=require("./Backdrop.cjs.js"),ke=require("./Shadow.cjs.js"),we=require("./Caustics.cjs.js"),Fe=require("./ContactShadows.cjs.js"),ze=require("./AccumulativeShadows.cjs.js"),Oe=require("./Reflector.cjs.js"),Ie=require("./SpotLight.cjs.js"),ye=require("./Environment.cjs.js"),He=require("./Lightformer.cjs.js"),Ve=require("./Sky.cjs.js"),We=require("./Stars.cjs.js"),Qe=require("./Cloud.cjs.js"),Xe=require("./Sparkles.cjs.js"),Ke=require("./useEnvironment.cjs.js"),Ne=require("./useMatcapTexture.cjs.js"),Ue=require("./useNormalTexture.cjs.js"),_e=require("./Wireframe.cjs.js"),Je=require("./ShadowAlpha.cjs.js"),Ye=require("./Points.cjs.js"),Ze=require("./Instances.cjs.js"),$e=require("./Segments.cjs.js"),er=require("./Detailed.cjs.js"),rr=require("./Preload.cjs.js"),sr=require("./BakeShadows.cjs.js"),tr=require("./meshBounds.cjs.js"),or=require("./AdaptiveDpr.cjs.js"),ir=require("./AdaptiveEvents.cjs.js"),ar=require("./PerformanceMonitor.cjs.js"),ur=require("./RenderTexture.cjs.js"),nr=require("./RenderCubeTexture.cjs.js"),cr=require("./Mask.cjs.js"),jr=require("./Hud.cjs.js"),pr=require("./Fisheye.cjs.js"),lr=require("./MeshPortalMaterial.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("three"),require("@react-three/fiber"),require("react-merge-refs"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("maath"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=o.CatmullRomLine,exports.Line=i.Line,exports.PositionalAudio=a.PositionalAudio,exports.Text=u.Text,exports.Text3D=n.Text3D,exports.Effects=c.Effects,exports.isWebGL2Available=c.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.GradientType=j.GradientType,exports.Image=p.Image,exports.Edges=l.Edges,exports.Outlines=x.Outlines,exports.Trail=q.Trail,exports.useTrail=q.useTrail,exports.Sampler=d.Sampler,exports.useSurfaceSampler=d.useSurfaceSampler,exports.ComputedAttribute=m.ComputedAttribute,exports.Clone=h.Clone,exports.MarchingCube=C.MarchingCube,exports.MarchingCubes=C.MarchingCubes,exports.MarchingPlane=C.MarchingPlane,exports.Decal=M.Decal,exports.Svg=S.Svg,exports.Gltf=T.Gltf,exports.AsciiRenderer=P.AsciiRenderer,exports.Splat=b.Splat,exports.OrthographicCamera=f.OrthographicCamera,exports.PerspectiveCamera=B.PerspectiveCamera,exports.CubeCamera=g.CubeCamera,exports.DeviceOrientationControls=v.DeviceOrientationControls,exports.FlyControls=A.FlyControls,exports.MapControls=G.MapControls,exports.OrbitControls=L.OrbitControls,exports.TrackballControls=R.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=E.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=w.FirstPersonControls,exports.CameraControls=F.CameraControls,exports.MotionPathControls=z.MotionPathControls,exports.useMotion=z.useMotion,exports.GizmoHelper=O.GizmoHelper,exports.useGizmoContext=O.useGizmoContext,exports.GizmoViewcube=I.GizmoViewcube,exports.GizmoViewport=y.GizmoViewport,exports.Grid=H.Grid,exports.useCubeTexture=V.useCubeTexture,exports.useFBX=W.useFBX,exports.useGLTF=Q.useGLTF,exports.useKTX2=X.useKTX2,exports.useProgress=K.useProgress,exports.IsObject=N.IsObject,exports.useTexture=N.useTexture,exports.useVideoTexture=U.useVideoTexture,exports.useFont=_.useFont,exports.Stats=J.Stats,exports.StatsGl=Y.StatsGl,exports.useDepthBuffer=Z.useDepthBuffer,exports.useAspect=$.useAspect,exports.useCamera=ee.useCamera,exports.useDetectGPU=re.useDetectGPU,exports.useHelper=se.useHelper,exports.Bvh=te.Bvh,exports.useBVH=te.useBVH,exports.useContextBridge=oe.useContextBridge,exports.useAnimations=ie.useAnimations,exports.useFBO=ae.useFBO,exports.useIntersect=ue.useIntersect,exports.useBoxProjectedEnv=ne.useBoxProjectedEnv,exports.BBAnchor=ce.BBAnchor,exports.useTrailTexture=je.useTrailTexture,exports.useCubeCamera=pe.useCubeCamera,exports.Example=le.Example,exports.SpriteAnimator=xe.SpriteAnimator,exports.useSpriteAnimator=xe.useSpriteAnimator,exports.CurveModifier=qe.CurveModifier,exports.MeshDistortMaterial=de.MeshDistortMaterial,exports.MeshWobbleMaterial=me.MeshWobbleMaterial,exports.MeshReflectorMaterial=he.MeshReflectorMaterial,exports.MeshRefractionMaterial=Ce.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Me.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Se.MeshDiscardMaterial,exports.PointMaterial=Te.PointMaterial,exports.PointMaterialImpl=Te.PointMaterialImpl,exports.shaderMaterial=Pe.shaderMaterial,exports.SoftShadows=be.SoftShadows,exports.Box=fe.Box,exports.Capsule=fe.Capsule,exports.Circle=fe.Circle,exports.Cone=fe.Cone,exports.Cylinder=fe.Cylinder,exports.Dodecahedron=fe.Dodecahedron,exports.Extrude=fe.Extrude,exports.Icosahedron=fe.Icosahedron,exports.Lathe=fe.Lathe,exports.Octahedron=fe.Octahedron,exports.Plane=fe.Plane,exports.Polyhedron=fe.Polyhedron,exports.Ring=fe.Ring,exports.Shape=fe.Shape,exports.Sphere=fe.Sphere,exports.Tetrahedron=fe.Tetrahedron,exports.Torus=fe.Torus,exports.TorusKnot=fe.TorusKnot,exports.Tube=fe.Tube,exports.RoundedBox=Be.RoundedBox,exports.ScreenQuad=ge.ScreenQuad,exports.Center=ve.Center,exports.Resize=Ae.Resize,exports.Bounds=Ge.Bounds,exports.useBounds=Ge.useBounds,exports.CameraShake=Le.CameraShake,exports.Float=Re.Float,exports.Stage=De.Stage,exports.Backdrop=Ee.Backdrop,exports.Shadow=ke.Shadow,exports.Caustics=we.Caustics,exports.ContactShadows=Fe.ContactShadows,exports.AccumulativeShadows=ze.AccumulativeShadows,exports.RandomizedLight=ze.RandomizedLight,exports.accumulativeContext=ze.accumulativeContext,exports.Reflector=Oe.Reflector,exports.SpotLight=Ie.SpotLight,exports.SpotLightShadow=Ie.SpotLightShadow,exports.Environment=ye.Environment,exports.EnvironmentCube=ye.EnvironmentCube,exports.EnvironmentMap=ye.EnvironmentMap,exports.EnvironmentPortal=ye.EnvironmentPortal,exports.Lightformer=He.Lightformer,exports.Sky=Ve.Sky,exports.calcPosFromAngles=Ve.calcPosFromAngles,exports.Stars=We.Stars,exports.Cloud=Qe.Cloud,exports.CloudInstance=Qe.CloudInstance,exports.Clouds=Qe.Clouds,exports.Sparkles=Xe.Sparkles,exports.useEnvironment=Ke.useEnvironment,exports.useMatcapTexture=Ne.useMatcapTexture,exports.useNormalTexture=Ue.useNormalTexture,exports.Wireframe=_e.Wireframe,exports.ShadowAlpha=Je.ShadowAlpha,exports.Point=Ye.Point,exports.Points=Ye.Points,exports.PointsBuffer=Ye.PointsBuffer,exports.PositionPoint=Ye.PositionPoint,exports.Instance=Ze.Instance,exports.Instances=Ze.Instances,exports.Merged=Ze.Merged,exports.Segment=$e.Segment,exports.SegmentObject=$e.SegmentObject,exports.Segments=$e.Segments,exports.Detailed=er.Detailed,exports.Preload=rr.Preload,exports.BakeShadows=sr.BakeShadows,exports.meshBounds=tr.meshBounds,exports.AdaptiveDpr=or.AdaptiveDpr,exports.AdaptiveEvents=ir.AdaptiveEvents,exports.PerformanceMonitor=ar.PerformanceMonitor,exports.usePerformanceMonitor=ar.usePerformanceMonitor,exports.RenderTexture=ur.RenderTexture,exports.RenderCubeTexture=nr.RenderCubeTexture,exports.Mask=cr.Mask,exports.useMask=cr.useMask,exports.Hud=jr.Hud,exports.Fisheye=pr.Fisheye,exports.MeshPortalMaterial=lr.MeshPortalMaterial;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./ScreenSizer.cjs.js"),t=require("./QuadraticBezierLine.cjs.js"),o=require("./CubicBezierLine.cjs.js"),i=require("./CatmullRomLine.cjs.js"),a=require("./Line.cjs.js"),u=require("./PositionalAudio.cjs.js"),c=require("./Text.cjs.js"),n=require("./Text3D.cjs.js"),j=require("./Effects.cjs.js"),p=require("./GradientTexture.cjs.js"),l=require("./Image.cjs.js"),x=require("./Edges.cjs.js"),q=require("./Outlines.cjs.js"),d=require("./Trail.cjs.js"),m=require("./Sampler.cjs.js"),h=require("./ComputedAttribute.cjs.js"),C=require("./Clone.cjs.js"),S=require("./MarchingCubes.cjs.js"),M=require("./Decal.cjs.js"),T=require("./Svg.cjs.js"),P=require("./Gltf.cjs.js"),b=require("./AsciiRenderer.cjs.js"),f=require("./Splat.cjs.js"),g=require("./OrthographicCamera.cjs.js"),B=require("./PerspectiveCamera.cjs.js"),v=require("./CubeCamera.cjs.js"),A=require("./DeviceOrientationControls.cjs.js"),L=require("./FlyControls.cjs.js"),R=require("./MapControls.cjs.js"),G=require("./OrbitControls.cjs.js"),F=require("./TrackballControls.cjs.js"),D=require("./ArcballControls.cjs.js"),E=require("./TransformControls.cjs.js"),k=require("./PointerLockControls.cjs.js"),w=require("./FirstPersonControls.cjs.js"),z=require("./CameraControls.cjs.js"),O=require("./MotionPathControls.cjs.js"),I=require("./GizmoHelper.cjs.js"),y=require("./GizmoViewcube.cjs.js"),H=require("./GizmoViewport.cjs.js"),V=require("./Grid.cjs.js"),W=require("./useCubeTexture.cjs.js"),Q=require("./useFBX.cjs.js"),X=require("./useGLTF.cjs.js"),K=require("./useKTX2.cjs.js"),N=require("./useProgress.cjs.js"),U=require("./useTexture.cjs.js"),_=require("./useVideoTexture.cjs.js"),J=require("./useFont.cjs.js"),Y=require("./useSpriteLoader.cjs.js"),Z=require("./Stats.cjs.js"),$=require("./StatsGl.cjs.js"),ee=require("./useDepthBuffer.cjs.js"),re=require("./useAspect.cjs.js"),se=require("./useCamera.cjs.js"),te=require("./useDetectGPU.cjs.js"),oe=require("./useHelper.cjs.js"),ie=require("./useBVH.cjs.js"),ae=require("./useContextBridge.cjs.js"),ue=require("./useAnimations.cjs.js"),ce=require("./useFBO.cjs.js"),ne=require("./useIntersect.cjs.js"),je=require("./useBoxProjectedEnv.cjs.js"),pe=require("./BBAnchor.cjs.js"),le=require("./useTrailTexture.cjs.js"),xe=require("./useCubeCamera.cjs.js"),qe=require("./Example.cjs.js"),de=require("./SpriteAnimator.cjs.js"),me=require("./CurveModifier.cjs.js"),he=require("./MeshDistortMaterial.cjs.js"),Ce=require("./MeshWobbleMaterial.cjs.js"),Se=require("./MeshReflectorMaterial.cjs.js"),Me=require("./MeshRefractionMaterial.cjs.js"),Te=require("./MeshTransmissionMaterial.cjs.js"),Pe=require("./MeshDiscardMaterial.cjs.js"),be=require("./PointMaterial.cjs.js"),fe=require("./shaderMaterial.cjs.js"),ge=require("./softShadows.cjs.js"),Be=require("./shapes.cjs.js"),ve=require("./RoundedBox.cjs.js"),Ae=require("./ScreenQuad.cjs.js"),Le=require("./Center.cjs.js"),Re=require("./Resize.cjs.js"),Ge=require("./Bounds.cjs.js"),Fe=require("./CameraShake.cjs.js"),De=require("./Float.cjs.js"),Ee=require("./Stage.cjs.js"),ke=require("./Backdrop.cjs.js"),we=require("./Shadow.cjs.js"),ze=require("./Caustics.cjs.js"),Oe=require("./ContactShadows.cjs.js"),Ie=require("./AccumulativeShadows.cjs.js"),ye=require("./Reflector.cjs.js"),He=require("./SpotLight.cjs.js"),Ve=require("./Environment.cjs.js"),We=require("./Lightformer.cjs.js"),Qe=require("./Sky.cjs.js"),Xe=require("./Stars.cjs.js"),Ke=require("./Cloud.cjs.js"),Ne=require("./Sparkles.cjs.js"),Ue=require("./useEnvironment.cjs.js"),_e=require("./useMatcapTexture.cjs.js"),Je=require("./useNormalTexture.cjs.js"),Ye=require("./Wireframe.cjs.js"),Ze=require("./ShadowAlpha.cjs.js"),$e=require("./Points.cjs.js"),er=require("./Instances.cjs.js"),rr=require("./Segments.cjs.js"),sr=require("./Detailed.cjs.js"),tr=require("./Preload.cjs.js"),or=require("./BakeShadows.cjs.js"),ir=require("./meshBounds.cjs.js"),ar=require("./AdaptiveDpr.cjs.js"),ur=require("./AdaptiveEvents.cjs.js"),cr=require("./PerformanceMonitor.cjs.js"),nr=require("./RenderTexture.cjs.js"),jr=require("./RenderCubeTexture.cjs.js"),pr=require("./Mask.cjs.js"),lr=require("./Hud.cjs.js"),xr=require("./Fisheye.cjs.js"),qr=require("./MeshPortalMaterial.cjs.js"),dr=require("./calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("three"),require("@react-three/fiber"),require("react-merge-refs"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("maath"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.ScreenSizer=s.ScreenSizer,exports.QuadraticBezierLine=t.QuadraticBezierLine,exports.CubicBezierLine=o.CubicBezierLine,exports.CatmullRomLine=i.CatmullRomLine,exports.Line=a.Line,exports.PositionalAudio=u.PositionalAudio,exports.Text=c.Text,exports.Text3D=n.Text3D,exports.Effects=j.Effects,exports.isWebGL2Available=j.isWebGL2Available,exports.GradientTexture=p.GradientTexture,exports.GradientType=p.GradientType,exports.Image=l.Image,exports.Edges=x.Edges,exports.Outlines=q.Outlines,exports.Trail=d.Trail,exports.useTrail=d.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=h.ComputedAttribute,exports.Clone=C.Clone,exports.MarchingCube=S.MarchingCube,exports.MarchingCubes=S.MarchingCubes,exports.MarchingPlane=S.MarchingPlane,exports.Decal=M.Decal,exports.Svg=T.Svg,exports.Gltf=P.Gltf,exports.AsciiRenderer=b.AsciiRenderer,exports.Splat=f.Splat,exports.OrthographicCamera=g.OrthographicCamera,exports.PerspectiveCamera=B.PerspectiveCamera,exports.CubeCamera=v.CubeCamera,exports.DeviceOrientationControls=A.DeviceOrientationControls,exports.FlyControls=L.FlyControls,exports.MapControls=R.MapControls,exports.OrbitControls=G.OrbitControls,exports.TrackballControls=F.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=E.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=w.FirstPersonControls,exports.CameraControls=z.CameraControls,exports.MotionPathControls=O.MotionPathControls,exports.useMotion=O.useMotion,exports.GizmoHelper=I.GizmoHelper,exports.useGizmoContext=I.useGizmoContext,exports.GizmoViewcube=y.GizmoViewcube,exports.GizmoViewport=H.GizmoViewport,exports.Grid=V.Grid,exports.useCubeTexture=W.useCubeTexture,exports.useFBX=Q.useFBX,exports.useGLTF=X.useGLTF,exports.useKTX2=K.useKTX2,exports.useProgress=N.useProgress,exports.IsObject=U.IsObject,exports.useTexture=U.useTexture,exports.useVideoTexture=_.useVideoTexture,exports.useFont=J.useFont,exports.calculateAspectRatio=Y.calculateAspectRatio,exports.getFirstItem=Y.getFirstItem,exports.useSpriteLoader=Y.useSpriteLoader,exports.Stats=Z.Stats,exports.StatsGl=$.StatsGl,exports.useDepthBuffer=ee.useDepthBuffer,exports.useAspect=re.useAspect,exports.useCamera=se.useCamera,exports.useDetectGPU=te.useDetectGPU,exports.useHelper=oe.useHelper,exports.Bvh=ie.Bvh,exports.useBVH=ie.useBVH,exports.useContextBridge=ae.useContextBridge,exports.useAnimations=ue.useAnimations,exports.useFBO=ce.useFBO,exports.useIntersect=ne.useIntersect,exports.useBoxProjectedEnv=je.useBoxProjectedEnv,exports.BBAnchor=pe.BBAnchor,exports.useTrailTexture=le.useTrailTexture,exports.useCubeCamera=xe.useCubeCamera,exports.Example=qe.Example,exports.SpriteAnimator=de.SpriteAnimator,exports.useSpriteAnimator=de.useSpriteAnimator,exports.CurveModifier=me.CurveModifier,exports.MeshDistortMaterial=he.MeshDistortMaterial,exports.MeshWobbleMaterial=Ce.MeshWobbleMaterial,exports.MeshReflectorMaterial=Se.MeshReflectorMaterial,exports.MeshRefractionMaterial=Me.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Te.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Pe.MeshDiscardMaterial,exports.PointMaterial=be.PointMaterial,exports.PointMaterialImpl=be.PointMaterialImpl,exports.shaderMaterial=fe.shaderMaterial,exports.SoftShadows=ge.SoftShadows,exports.Box=Be.Box,exports.Capsule=Be.Capsule,exports.Circle=Be.Circle,exports.Cone=Be.Cone,exports.Cylinder=Be.Cylinder,exports.Dodecahedron=Be.Dodecahedron,exports.Extrude=Be.Extrude,exports.Icosahedron=Be.Icosahedron,exports.Lathe=Be.Lathe,exports.Octahedron=Be.Octahedron,exports.Plane=Be.Plane,exports.Polyhedron=Be.Polyhedron,exports.Ring=Be.Ring,exports.Shape=Be.Shape,exports.Sphere=Be.Sphere,exports.Tetrahedron=Be.Tetrahedron,exports.Torus=Be.Torus,exports.TorusKnot=Be.TorusKnot,exports.Tube=Be.Tube,exports.RoundedBox=ve.RoundedBox,exports.ScreenQuad=Ae.ScreenQuad,exports.Center=Le.Center,exports.Resize=Re.Resize,exports.Bounds=Ge.Bounds,exports.useBounds=Ge.useBounds,exports.CameraShake=Fe.CameraShake,exports.Float=De.Float,exports.Stage=Ee.Stage,exports.Backdrop=ke.Backdrop,exports.Shadow=we.Shadow,exports.Caustics=ze.Caustics,exports.ContactShadows=Oe.ContactShadows,exports.AccumulativeShadows=Ie.AccumulativeShadows,exports.RandomizedLight=Ie.RandomizedLight,exports.accumulativeContext=Ie.accumulativeContext,exports.Reflector=ye.Reflector,exports.SpotLight=He.SpotLight,exports.SpotLightShadow=He.SpotLightShadow,exports.Environment=Ve.Environment,exports.EnvironmentCube=Ve.EnvironmentCube,exports.EnvironmentMap=Ve.EnvironmentMap,exports.EnvironmentPortal=Ve.EnvironmentPortal,exports.Lightformer=We.Lightformer,exports.Sky=Qe.Sky,exports.calcPosFromAngles=Qe.calcPosFromAngles,exports.Stars=Xe.Stars,exports.Cloud=Ke.Cloud,exports.CloudInstance=Ke.CloudInstance,exports.Clouds=Ke.Clouds,exports.Sparkles=Ne.Sparkles,exports.useEnvironment=Ue.useEnvironment,exports.useMatcapTexture=_e.useMatcapTexture,exports.useNormalTexture=Je.useNormalTexture,exports.Wireframe=Ye.Wireframe,exports.ShadowAlpha=Ze.ShadowAlpha,exports.Point=$e.Point,exports.Points=$e.Points,exports.PointsBuffer=$e.PointsBuffer,exports.PositionPoint=$e.PositionPoint,exports.Instance=er.Instance,exports.Instances=er.Instances,exports.Merged=er.Merged,exports.Segment=rr.Segment,exports.SegmentObject=rr.SegmentObject,exports.Segments=rr.Segments,exports.Detailed=sr.Detailed,exports.Preload=tr.Preload,exports.BakeShadows=or.BakeShadows,exports.meshBounds=ir.meshBounds,exports.AdaptiveDpr=ar.AdaptiveDpr,exports.AdaptiveEvents=ur.AdaptiveEvents,exports.PerformanceMonitor=cr.PerformanceMonitor,exports.usePerformanceMonitor=cr.usePerformanceMonitor,exports.RenderTexture=nr.RenderTexture,exports.RenderCubeTexture=jr.RenderCubeTexture,exports.Mask=pr.Mask,exports.useMask=pr.useMask,exports.Hud=lr.Hud,exports.Fisheye=xr.Fisheye,exports.MeshPortalMaterial=qr.MeshPortalMaterial,exports.calculateScaleFactor=dr.calculateScaleFactor;
|
package/core/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './Billboard';
|
|
2
2
|
export * from './ScreenSpace';
|
|
3
|
+
export * from './ScreenSizer';
|
|
3
4
|
export * from './QuadraticBezierLine';
|
|
4
5
|
export * from './CubicBezierLine';
|
|
5
6
|
export * from './CatmullRomLine';
|
|
@@ -48,6 +49,7 @@ export * from './useProgress';
|
|
|
48
49
|
export * from './useTexture';
|
|
49
50
|
export * from './useVideoTexture';
|
|
50
51
|
export * from './useFont';
|
|
52
|
+
export * from './useSpriteLoader';
|
|
51
53
|
export * from './Stats';
|
|
52
54
|
export * from './StatsGl';
|
|
53
55
|
export * from './useDepthBuffer';
|
|
@@ -119,3 +121,4 @@ export * from './Mask';
|
|
|
119
121
|
export * from './Hud';
|
|
120
122
|
export * from './Fisheye';
|
|
121
123
|
export * from './MeshPortalMaterial';
|
|
124
|
+
export * from './calculateScaleFactor';
|
package/core/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { Billboard } from './Billboard.js';
|
|
2
2
|
export { ScreenSpace } from './ScreenSpace.js';
|
|
3
|
+
export { ScreenSizer } from './ScreenSizer.js';
|
|
3
4
|
export { QuadraticBezierLine } from './QuadraticBezierLine.js';
|
|
4
5
|
export { CubicBezierLine } from './CubicBezierLine.js';
|
|
5
6
|
export { CatmullRomLine } from './CatmullRomLine.js';
|
|
@@ -48,6 +49,7 @@ export { useProgress } from './useProgress.js';
|
|
|
48
49
|
export { IsObject, useTexture } from './useTexture.js';
|
|
49
50
|
export { useVideoTexture } from './useVideoTexture.js';
|
|
50
51
|
export { useFont } from './useFont.js';
|
|
52
|
+
export { calculateAspectRatio, getFirstItem, useSpriteLoader } from './useSpriteLoader.js';
|
|
51
53
|
export { Stats } from './Stats.js';
|
|
52
54
|
export { StatsGl } from './StatsGl.js';
|
|
53
55
|
export { useDepthBuffer } from './useDepthBuffer.js';
|
|
@@ -119,6 +121,7 @@ export { Mask, useMask } from './Mask.js';
|
|
|
119
121
|
export { Hud } from './Hud.js';
|
|
120
122
|
export { Fisheye } from './Fisheye.js';
|
|
121
123
|
export { MeshPortalMaterial } from './MeshPortalMaterial.js';
|
|
124
|
+
export { calculateScaleFactor } from './calculateScaleFactor.js';
|
|
122
125
|
import '@babel/runtime/helpers/esm/extends';
|
|
123
126
|
import 'react';
|
|
124
127
|
import 'three';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");function n(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 s=n(e),u=n(t);const a=e=>{if(Array.isArray(e))return e[0];if("object"==typeof e&&null!==e){return e[Object.keys(e)[0]][0]}return{w:0,h:0}},o=(e,r,t,n)=>{const u=r*(n.aspect>e/r?n.width/e:n.height/r),a=e*(n.aspect>e/r?n.width/e:n.height/r)*t,o=u*t;let i=Math.min(1,a),c=Math.min(1,o);return a>1&&(i=1,c=o/a*1),new s.Vector3(i,c,1)};function i(n,i,c,f,l){const h=r.useThree((e=>e.viewport)),d=r.useThree((e=>e.gl)),m=u.useRef(null),p=u.useRef(0),[w,y]=t.useState(null),[x,g]=u.useState(new s.Texture),b=new s.TextureLoader,[L,S]=t.useState(null);function j(e){(e||n)&&new Promise((r=>{b.load(null!=e?e:n,r)})).then((e=>{T(null,e)}))}function O(e,r,t){const n=fetch(e).then((e=>e.json())),s=new Promise((e=>{b.load(r,e)}));Promise.all([n,s]).then((e=>{t(e[0],e[1])}))}u.useLayoutEffect((()=>(i&&n?O(i,n,T):n&&j(),()=>{n&&r.useLoader.clear(e.TextureLoader,n)})),[]);const T=(e,r)=>{let t=new s.Vector3(1,1,1);if(null===e){if(r&&f){const e=r.image.width,n=r.image.height,s=e/f,u=n;if(p.current=f,m.current={frames:[],meta:{version:"1.0",size:{w:e,h:n},scale:"1"}},parseInt(s.toString(),10)===s)for(let e=0;e<f;e++)m.current.frames.push({frame:{x:e*s,y:0,w:s,h:u},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:s,h:u},sourceSize:{w:s,h:n}});t=o(s,u,.1,h)}}else if(r){m.current=e,m.current.frames=Array.isArray(e.frames)?e.frames:A(),p.current=Array.isArray(e.frames)?e.frames.length:Object.keys(e.frames).length;const{w:r,h:n}=a(e.frames).sourceSize;t=o(r,n,.1,h)}y(m.current),r.encoding=s.sRGBEncoding,g(r),S({spriteTexture:r,spriteData:m.current,aspect:t})},A=()=>{const e={},r=m.current,t=c;if(t)for(let n=0;n<t.length;n++){e[t[n]]=[];for(const s in r.frames){const u=r.frames[s],a=u.frame,o=a.x,i=a.y,c=a.w,f=a.h,l=u.sourceSize.w,h=u.sourceSize.h;"string"==typeof s&&-1!==s.toLowerCase().indexOf(t[n].toLowerCase())&&e[t[n]].push({x:o,y:i,w:c,h:f,frame:a,sourceSize:{w:l,h:h}})}}return e};return u.useLayoutEffect((()=>{null==l||l(x,w)}),[x,w]),t.useEffect((()=>{if("initTexture"in d){(Array.isArray(x)?x:[x]).forEach(d.initTexture)}}),[d,x]),{spriteObj:L,loadJsonAndTexture:function(e,r){r&&e?O(r,e,T):j(e)}}}i.preload=t=>r.useLoader.preload(e.TextureLoader,t),i.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.calculateAspectRatio=o,exports.getFirstItem=a,exports.useSpriteLoader=i;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Texture } from 'three';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
export declare const getFirstItem: (param: any) => any;
|
|
4
|
+
export declare const calculateAspectRatio: (width: number, height: number, factor: number, v: any) => THREE.Vector3;
|
|
5
|
+
export declare function useSpriteLoader<Url extends string>(input?: Url | null, json?: string | null, animationNames?: string[] | null, numberOfFrames?: number | null, onLoad?: (texture: Texture, textureData?: any) => void): any;
|
|
6
|
+
export declare namespace useSpriteLoader {
|
|
7
|
+
var preload: (url: string) => undefined;
|
|
8
|
+
var clear: (input: string) => void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { TextureLoader } from 'three';
|
|
3
|
+
import { useThree, useLoader } from '@react-three/fiber';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { useState, useEffect } from 'react';
|
|
6
|
+
|
|
7
|
+
// utils
|
|
8
|
+
const getFirstItem = param => {
|
|
9
|
+
if (Array.isArray(param)) {
|
|
10
|
+
return param[0];
|
|
11
|
+
} else if (typeof param === 'object' && param !== null) {
|
|
12
|
+
const keys = Object.keys(param);
|
|
13
|
+
return param[keys[0]][0];
|
|
14
|
+
} else {
|
|
15
|
+
return {
|
|
16
|
+
w: 0,
|
|
17
|
+
h: 0
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const calculateAspectRatio = (width, height, factor, v) => {
|
|
22
|
+
const adaptedHeight = height * (v.aspect > width / height ? v.width / width : v.height / height);
|
|
23
|
+
const adaptedWidth = width * (v.aspect > width / height ? v.width / width : v.height / height);
|
|
24
|
+
const scaleX = adaptedWidth * factor;
|
|
25
|
+
const scaleY = adaptedHeight * factor;
|
|
26
|
+
const currentMaxScale = 1;
|
|
27
|
+
// Calculate the maximum scale based on the aspect ratio and max scale limit
|
|
28
|
+
let finalMaxScaleW = Math.min(currentMaxScale, scaleX);
|
|
29
|
+
let finalMaxScaleH = Math.min(currentMaxScale, scaleY);
|
|
30
|
+
|
|
31
|
+
// Ensure that scaleX and scaleY do not exceed the max scale while maintaining aspect ratio
|
|
32
|
+
if (scaleX > currentMaxScale) {
|
|
33
|
+
finalMaxScaleW = currentMaxScale;
|
|
34
|
+
finalMaxScaleH = scaleY / scaleX * currentMaxScale;
|
|
35
|
+
}
|
|
36
|
+
return new THREE.Vector3(finalMaxScaleW, finalMaxScaleH, 1);
|
|
37
|
+
};
|
|
38
|
+
function useSpriteLoader(input, json, animationNames, numberOfFrames, onLoad) {
|
|
39
|
+
const v = useThree(state => state.viewport);
|
|
40
|
+
const gl = useThree(state => state.gl);
|
|
41
|
+
const spriteDataRef = React.useRef(null);
|
|
42
|
+
const totalFrames = React.useRef(0);
|
|
43
|
+
const aspectFactor = 0.1;
|
|
44
|
+
const [spriteData, setSpriteData] = useState(null);
|
|
45
|
+
const [spriteTexture, setSpriteTexture] = React.useState(new THREE.Texture());
|
|
46
|
+
const textureLoader = new THREE.TextureLoader();
|
|
47
|
+
const [spriteObj, setSpriteObj] = useState(null);
|
|
48
|
+
React.useLayoutEffect(() => {
|
|
49
|
+
if (json && input) {
|
|
50
|
+
loadJsonAndTextureAndExecuteCallback(json, input, parseSpriteData);
|
|
51
|
+
} else if (input) {
|
|
52
|
+
// only load the texture, this is an image sprite only
|
|
53
|
+
loadStandaloneSprite();
|
|
54
|
+
}
|
|
55
|
+
return () => {
|
|
56
|
+
if (input) {
|
|
57
|
+
useLoader.clear(TextureLoader, input);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}, []);
|
|
61
|
+
function loadJsonAndTexture(textureUrl, jsonUrl) {
|
|
62
|
+
if (jsonUrl && textureUrl) {
|
|
63
|
+
loadJsonAndTextureAndExecuteCallback(jsonUrl, textureUrl, parseSpriteData);
|
|
64
|
+
} else {
|
|
65
|
+
loadStandaloneSprite(textureUrl);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function loadStandaloneSprite(textureUrl) {
|
|
69
|
+
if (textureUrl || input) {
|
|
70
|
+
new Promise(resolve => {
|
|
71
|
+
textureLoader.load(textureUrl !== null && textureUrl !== void 0 ? textureUrl : input, resolve);
|
|
72
|
+
}).then(texture => {
|
|
73
|
+
parseSpriteData(null, texture);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
*
|
|
80
|
+
*/
|
|
81
|
+
function loadJsonAndTextureAndExecuteCallback(jsonUrl, textureUrl, callback) {
|
|
82
|
+
const jsonPromise = fetch(jsonUrl).then(response => response.json());
|
|
83
|
+
const texturePromise = new Promise(resolve => {
|
|
84
|
+
textureLoader.load(textureUrl, resolve);
|
|
85
|
+
});
|
|
86
|
+
Promise.all([jsonPromise, texturePromise]).then(response => {
|
|
87
|
+
callback(response[0], response[1]);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const parseSpriteData = (json, _spriteTexture) => {
|
|
91
|
+
let aspect = new THREE.Vector3(1, 1, 1);
|
|
92
|
+
// sprite only case
|
|
93
|
+
if (json === null) {
|
|
94
|
+
if (_spriteTexture && numberOfFrames) {
|
|
95
|
+
//get size from texture
|
|
96
|
+
const width = _spriteTexture.image.width;
|
|
97
|
+
const height = _spriteTexture.image.height;
|
|
98
|
+
const frameWidth = width / numberOfFrames;
|
|
99
|
+
const frameHeight = height;
|
|
100
|
+
totalFrames.current = numberOfFrames;
|
|
101
|
+
spriteDataRef.current = {
|
|
102
|
+
frames: [],
|
|
103
|
+
meta: {
|
|
104
|
+
version: '1.0',
|
|
105
|
+
size: {
|
|
106
|
+
w: width,
|
|
107
|
+
h: height
|
|
108
|
+
},
|
|
109
|
+
scale: '1'
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
if (parseInt(frameWidth.toString(), 10) === frameWidth) {
|
|
113
|
+
// if it fits
|
|
114
|
+
for (let i = 0; i < numberOfFrames; i++) {
|
|
115
|
+
spriteDataRef.current.frames.push({
|
|
116
|
+
frame: {
|
|
117
|
+
x: i * frameWidth,
|
|
118
|
+
y: 0,
|
|
119
|
+
w: frameWidth,
|
|
120
|
+
h: frameHeight
|
|
121
|
+
},
|
|
122
|
+
rotated: false,
|
|
123
|
+
trimmed: false,
|
|
124
|
+
spriteSourceSize: {
|
|
125
|
+
x: 0,
|
|
126
|
+
y: 0,
|
|
127
|
+
w: frameWidth,
|
|
128
|
+
h: frameHeight
|
|
129
|
+
},
|
|
130
|
+
sourceSize: {
|
|
131
|
+
w: frameWidth,
|
|
132
|
+
h: height
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
aspect = calculateAspectRatio(frameWidth, frameHeight, aspectFactor, v);
|
|
138
|
+
}
|
|
139
|
+
} else if (_spriteTexture) {
|
|
140
|
+
spriteDataRef.current = json;
|
|
141
|
+
spriteDataRef.current.frames = Array.isArray(json.frames) ? json.frames : parseFrames();
|
|
142
|
+
totalFrames.current = Array.isArray(json.frames) ? json.frames.length : Object.keys(json.frames).length;
|
|
143
|
+
const {
|
|
144
|
+
w,
|
|
145
|
+
h
|
|
146
|
+
} = getFirstItem(json.frames).sourceSize;
|
|
147
|
+
aspect = calculateAspectRatio(w, h, aspectFactor, v);
|
|
148
|
+
}
|
|
149
|
+
setSpriteData(spriteDataRef.current);
|
|
150
|
+
_spriteTexture.encoding = THREE.sRGBEncoding;
|
|
151
|
+
setSpriteTexture(_spriteTexture);
|
|
152
|
+
setSpriteObj({
|
|
153
|
+
spriteTexture: _spriteTexture,
|
|
154
|
+
spriteData: spriteDataRef.current,
|
|
155
|
+
aspect: aspect
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// for frame based JSON Hash sprite data
|
|
160
|
+
const parseFrames = () => {
|
|
161
|
+
const sprites = {};
|
|
162
|
+
const data = spriteDataRef.current;
|
|
163
|
+
const delimiters = animationNames;
|
|
164
|
+
if (delimiters) {
|
|
165
|
+
for (let i = 0; i < delimiters.length; i++) {
|
|
166
|
+
sprites[delimiters[i]] = [];
|
|
167
|
+
for (const innerKey in data['frames']) {
|
|
168
|
+
const value = data['frames'][innerKey];
|
|
169
|
+
const frameData = value['frame'];
|
|
170
|
+
const x = frameData['x'];
|
|
171
|
+
const y = frameData['y'];
|
|
172
|
+
const width = frameData['w'];
|
|
173
|
+
const height = frameData['h'];
|
|
174
|
+
const sourceWidth = value['sourceSize']['w'];
|
|
175
|
+
const sourceHeight = value['sourceSize']['h'];
|
|
176
|
+
if (typeof innerKey === 'string' && innerKey.toLowerCase().indexOf(delimiters[i].toLowerCase()) !== -1) {
|
|
177
|
+
sprites[delimiters[i]].push({
|
|
178
|
+
x: x,
|
|
179
|
+
y: y,
|
|
180
|
+
w: width,
|
|
181
|
+
h: height,
|
|
182
|
+
frame: frameData,
|
|
183
|
+
sourceSize: {
|
|
184
|
+
w: sourceWidth,
|
|
185
|
+
h: sourceHeight
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return sprites;
|
|
193
|
+
};
|
|
194
|
+
React.useLayoutEffect(() => {
|
|
195
|
+
onLoad == null || onLoad(spriteTexture, spriteData);
|
|
196
|
+
}, [spriteTexture, spriteData]);
|
|
197
|
+
|
|
198
|
+
// https://github.com/mrdoob/three.js/issues/22696
|
|
199
|
+
// Upload the texture to the GPU immediately instead of waiting for the first render
|
|
200
|
+
// NOTE: only available for WebGLRenderer
|
|
201
|
+
useEffect(() => {
|
|
202
|
+
if ('initTexture' in gl) {
|
|
203
|
+
const array = Array.isArray(spriteTexture) ? spriteTexture : [spriteTexture];
|
|
204
|
+
array.forEach(gl.initTexture);
|
|
205
|
+
}
|
|
206
|
+
}, [gl, spriteTexture]);
|
|
207
|
+
return {
|
|
208
|
+
spriteObj,
|
|
209
|
+
loadJsonAndTexture
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
useSpriteLoader.preload = url => useLoader.preload(TextureLoader, url);
|
|
213
|
+
useSpriteLoader.clear = input => useLoader.clear(TextureLoader, input);
|
|
214
|
+
|
|
215
|
+
export { calculateAspectRatio, getFirstItem, useSpriteLoader };
|