@react-three/drei 8.18.9 → 9.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -254
- package/core/ArcballControls.cjs.js +1 -1
- package/core/ArcballControls.js +26 -17
- package/core/Billboard.d.ts +2 -2
- package/core/Bounds.cjs.js +1 -1
- package/core/Bounds.d.ts +1 -2
- package/core/Bounds.js +15 -26
- package/core/Center.d.ts +1 -1
- package/core/ContactShadows.cjs.js +1 -1
- package/core/ContactShadows.d.ts +1 -1
- package/core/ContactShadows.js +1 -2
- package/core/CubeCamera.cjs.js +1 -1
- package/core/CubeCamera.js +7 -7
- package/core/Detailed.d.ts +2 -2
- package/core/DeviceOrientationControls.cjs.js +1 -1
- package/core/DeviceOrientationControls.d.ts +1 -1
- package/core/DeviceOrientationControls.js +6 -2
- package/core/Effects.cjs.js +1 -1
- package/core/Effects.d.ts +2 -2
- package/core/Effects.js +2 -2
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.d.ts +3 -13
- package/core/Environment.js +30 -95
- package/core/FirstPersonControls.cjs.js +1 -1
- package/core/FirstPersonControls.d.ts +1 -1
- package/core/FirstPersonControls.js +6 -2
- package/core/Float.cjs.js +1 -1
- package/core/Float.d.ts +1 -1
- package/core/Float.js +4 -5
- package/core/FlyControls.d.ts +1 -1
- package/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoHelper.d.ts +1 -2
- package/core/GizmoHelper.js +41 -31
- package/core/GizmoViewcube.cjs.js +1 -1
- package/core/GizmoViewcube.d.ts +2 -2
- package/core/GizmoViewcube.js +1 -1
- package/core/GizmoViewport.d.ts +2 -2
- package/core/Image.cjs.js +1 -1
- package/core/Image.d.ts +2 -4
- package/core/Image.js +1 -6
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.d.ts +3 -3
- package/core/Instances.js +11 -5
- package/core/Line.d.ts +1 -1
- package/core/MapControls.d.ts +1 -1
- package/core/MeshDistortMaterial.d.ts +2 -4
- package/core/MeshReflectorMaterial.cjs.js +1 -1
- package/core/MeshReflectorMaterial.d.ts +2 -1
- package/core/MeshReflectorMaterial.js +3 -1
- package/core/MeshWobbleMaterial.d.ts +2 -4
- package/core/OrbitControls.cjs.js +1 -1
- package/core/OrbitControls.js +32 -22
- package/core/OrthographicCamera.d.ts +2 -2
- package/core/PerspectiveCamera.d.ts +2 -2
- package/core/PointMaterial.cjs.js +1 -1
- package/core/PointMaterial.d.ts +7 -3
- package/core/PointMaterial.js +32 -14
- package/core/PointerLockControls.cjs.js +1 -1
- package/core/PointerLockControls.d.ts +1 -2
- package/core/PointerLockControls.js +22 -35
- package/core/Points.cjs.js +1 -1
- package/core/Points.d.ts +3 -3
- package/core/Points.js +36 -17
- package/core/PositionalAudio.d.ts +2 -2
- package/core/Reflector.d.ts +1 -1
- package/core/RoundedBox.d.ts +1 -1
- package/core/ScreenQuad.d.ts +1 -1
- package/core/Segments.d.ts +1 -1
- package/core/Shadow.d.ts +2 -2
- package/core/SpotLight.d.ts +20 -4
- package/core/Stage.cjs.js +1 -1
- package/core/Stage.js +2 -1
- package/core/Stars.cjs.js +1 -1
- package/core/Stars.js +3 -6
- package/core/Text.cjs.js +1 -1
- package/core/Text.d.ts +2 -3
- package/core/Text.js +2 -3
- package/core/TrackballControls.cjs.js +1 -1
- package/core/TrackballControls.d.ts +1 -1
- package/core/TrackballControls.js +6 -11
- package/core/TransformControls.cjs.js +1 -1
- package/core/TransformControls.d.ts +1 -1
- package/core/TransformControls.js +12 -4
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +0 -4
- package/core/index.js +2 -7
- package/core/shapes.d.ts +17 -17
- package/core/useFBX.d.ts +1 -1
- package/core/useFBX.js +1 -2
- package/core/useGLTF.d.ts +1 -1
- package/core/useGLTF.js +1 -2
- package/core/useHelper.d.ts +1 -3
- package/core/useKTX2.d.ts +1 -1
- package/core/useKTX2.js +1 -2
- package/core/useTexture.d.ts +1 -1
- package/core/useTexture.js +1 -2
- package/index.cjs.js +1 -1
- package/index.js +1 -5
- package/materials/ConvolutionMaterial.cjs.js +1 -1
- package/materials/ConvolutionMaterial.js +0 -2
- package/materials/MeshReflectorMaterial.cjs.js +1 -1
- package/materials/MeshReflectorMaterial.d.ts +3 -0
- package/materials/MeshReflectorMaterial.js +27 -1
- package/materials/SpotLightMaterial.cjs.js +1 -1
- package/materials/SpotLightMaterial.js +0 -3
- package/native/index.cjs.js +1 -1
- package/native/index.js +2 -7
- package/package.json +6 -7
- package/web/Html.cjs.js +1 -1
- package/web/Html.js +6 -4
- package/web/Select.js +0 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +2 -7
- package/core/Clone.cjs.js +0 -1
- package/core/Clone.d.ts +0 -11
- package/core/Clone.js +0 -89
- package/core/Lightformer.cjs.js +0 -1
- package/core/Lightformer.d.ts +0 -41
- package/core/Lightformer.js +0 -51
- package/core/Trail.cjs.js +0 -1
- package/core/Trail.d.ts +0 -20
- package/core/Trail.js +0 -160
- package/core/useBoxProjectedEnv.cjs.js +0 -1
- package/core/useBoxProjectedEnv.d.ts +0 -8
- package/core/useBoxProjectedEnv.js +0 -98
package/core/Instances.js
CHANGED
|
@@ -11,7 +11,7 @@ const globalContext = /*#__PURE__*/React.createContext(null);
|
|
|
11
11
|
const parentMatrix = new THREE.Matrix4();
|
|
12
12
|
const instanceMatrix = new THREE.Matrix4();
|
|
13
13
|
const tempMatrix = new THREE.Matrix4();
|
|
14
|
-
new THREE.Color();
|
|
14
|
+
const color = new THREE.Color();
|
|
15
15
|
const translation = new THREE.Vector3();
|
|
16
16
|
const rotation = new THREE.Quaternion();
|
|
17
17
|
const scale = new THREE.Vector3();
|
|
@@ -85,10 +85,16 @@ const Instances = /*#__PURE__*/React.forwardRef(({
|
|
|
85
85
|
|
|
86
86
|
instanceRef.matrixWorld.decompose(translation, rotation, scale);
|
|
87
87
|
instanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
|
|
89
|
+
if (!instanceMatrix.equals(tempMatrix.fromArray(matrices, i * 16))) {
|
|
90
|
+
instanceMatrix.toArray(matrices, i * 16);
|
|
91
|
+
parentRef.current.instanceMatrix.needsUpdate = true;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (!instanceRef.color.equals(color.fromArray(colors, i * 3))) {
|
|
95
|
+
instanceRef.color.toArray(colors, i * 3);
|
|
96
|
+
parentRef.current.instanceColor.needsUpdate = true;
|
|
97
|
+
}
|
|
92
98
|
}
|
|
93
99
|
|
|
94
100
|
count++;
|
package/core/Line.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export declare type LineProps = {
|
|
|
6
6
|
points: Array<Vector3 | [number, number, number]>;
|
|
7
7
|
vertexColors?: Array<Color | [number, number, number]>;
|
|
8
8
|
} & LineMaterialParameters & Omit<ReactThreeFiber.Object3DNode<Line2, typeof Line2>, 'args'> & Omit<ReactThreeFiber.Object3DNode<LineMaterial, [LineMaterialParameters]>, 'color' | 'vertexColors' | 'resolution' | 'args'>;
|
|
9
|
-
export declare const Line: React.ForwardRefExoticComponent<Pick<LineProps, "attach" | "
|
|
9
|
+
export declare const Line: React.ForwardRefExoticComponent<Pick<LineProps, "attach" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "dashed" | "points" | "material" | "alphaWrite" | "isMaterial" | "needsUpdate" | "version" | "onBeforeCompile" | "customProgramCacheKey" | "setValues" | "isLine2" | "computeLineDistances" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "lineWidth" | "dashScale" | "dashOffset" | "dashSize" | "resolution" | "derivatives" | "defaultAttributeValues" | "index0AttributeName" | "uniformsNeedUpdate" | "isShaderMaterial" | "gapSize" | keyof import("three").ShaderMaterialParameters> & React.RefAttributes<Line2>>;
|
package/core/MapControls.d.ts
CHANGED
|
@@ -9,4 +9,4 @@ export declare type MapControlsProps = ReactThreeFiber.Overwrite<ReactThreeFiber
|
|
|
9
9
|
onStart?: (e?: THREE.Event) => void;
|
|
10
10
|
onEnd?: (e?: THREE.Event) => void;
|
|
11
11
|
}>;
|
|
12
|
-
export declare const MapControls: React.ForwardRefExoticComponent<Pick<MapControlsProps, "object" | "attach" | "
|
|
12
|
+
export declare const MapControls: React.ForwardRefExoticComponent<Pick<MapControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "reset" | "enabled" | "update" | "onStart" | "keys" | "target" | "touches" | "connect" | "domElement" | "minDistance" | "maxDistance" | "minZoom" | "maxZoom" | "minPolarAngle" | "maxPolarAngle" | "minAzimuthAngle" | "maxAzimuthAngle" | "enableDamping" | "dampingFactor" | "enableZoom" | "zoomSpeed" | "enableRotate" | "rotateSpeed" | "enablePan" | "panSpeed" | "screenSpacePanning" | "keyPanSpeed" | "autoRotate" | "autoRotateSpeed" | "reverseOrbit" | "mouseButtons" | "target0" | "position0" | "zoom0" | "_domElementKeyEvents" | "getPolarAngle" | "getAzimuthalAngle" | "setPolarAngle" | "setAzimuthalAngle" | "getDistance" | "listenToKeyEvents" | "saveState" | "onEnd"> & React.RefAttributes<MapControlsImpl>>;
|
|
@@ -12,14 +12,12 @@ declare global {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
export declare const MeshDistortMaterial: React.ForwardRefExoticComponent<Pick<
|
|
16
|
-
color?: import("@react-three/fiber").Color | undefined;
|
|
17
|
-
} & {
|
|
15
|
+
export declare const MeshDistortMaterial: React.ForwardRefExoticComponent<Pick<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<MeshPhysicalMaterial>, import("@react-three/fiber").NodeProps<MeshPhysicalMaterial, [MeshPhysicalMaterialParameters]>>> & {
|
|
18
16
|
time?: number | undefined;
|
|
19
17
|
distort?: number | undefined;
|
|
20
18
|
radius?: number | undefined;
|
|
21
19
|
} & {
|
|
22
20
|
speed?: number | undefined;
|
|
23
21
|
factor?: number | undefined;
|
|
24
|
-
}, "
|
|
22
|
+
}, "attach" | "args" | "children" | "key" | "onUpdate" | "time" | "speed" | keyof MeshPhysicalMaterial | "radius" | "distort" | "factor"> & React.RefAttributes<unknown>>;
|
|
25
23
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("@react-three/fiber"),n=require("react-merge-refs"),i=require("../materials/BlurPass.cjs.js"),o=require("../materials/MeshReflectorMaterial.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("../materials/ConvolutionMaterial.cjs.js");var u=s(e),d=l(t),c=s(n);a.extend({MeshReflectorMaterialImpl:o.MeshReflectorMaterial});const p=d.forwardRef((({mixBlur:e=0,mixStrength:t=1,resolution:n=256,blur:o=[0,0],minDepthThreshold:s=.9,maxDepthThreshold:l=1,depthScale:p=0,depthToBlurRatioBias:m=.25,mirror:h=0,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("@react-three/fiber"),n=require("react-merge-refs"),i=require("../materials/BlurPass.cjs.js"),o=require("../materials/MeshReflectorMaterial.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("../materials/ConvolutionMaterial.cjs.js");var u=s(e),d=l(t),c=s(n);a.extend({MeshReflectorMaterialImpl:o.MeshReflectorMaterial});const p=d.forwardRef((({mixBlur:e=0,mixStrength:t=1,resolution:n=256,blur:o=[0,0],minDepthThreshold:s=.9,maxDepthThreshold:l=1,depthScale:p=0,depthToBlurRatioBias:m=.25,mirror:h=0,debug:f=0,distortion:x=1,mixContrast:M=1,distortionMap:S,reflectorOffset:T=0,...b},y)=>{const w=a.useThree((({gl:e})=>e)),g=a.useThree((({camera:e})=>e)),R=a.useThree((({scene:e})=>e)),v=(o=Array.isArray(o)?o:[o,o])[0]+o[1]>0,j=d.useRef(null),[D]=d.useState((()=>new r.Plane)),[B]=d.useState((()=>new r.Vector3)),[_]=d.useState((()=>new r.Vector3)),[O]=d.useState((()=>new r.Vector3)),[P]=d.useState((()=>new r.Matrix4)),[U]=d.useState((()=>new r.Vector3(0,0,-1))),[E]=d.useState((()=>new r.Vector4)),[V]=d.useState((()=>new r.Vector3)),[W]=d.useState((()=>new r.Vector3)),[F]=d.useState((()=>new r.Vector4)),[q]=d.useState((()=>new r.Matrix4)),[I]=d.useState((()=>new r.PerspectiveCamera)),C=d.useCallback((()=>{var e;const t=j.current.parent||(null==(e=j.current)?void 0:e.__r3f.parent);if(!t)return;if(_.setFromMatrixPosition(t.matrixWorld),O.setFromMatrixPosition(g.matrixWorld),P.extractRotation(t.matrixWorld),B.set(0,0,1),B.applyMatrix4(P),_.addScaledVector(B,T),V.subVectors(_,O),V.dot(B)>0)return;V.reflect(B).negate(),V.add(_),P.extractRotation(g.matrixWorld),U.set(0,0,-1),U.applyMatrix4(P),U.add(O),W.subVectors(_,U),W.reflect(B).negate(),W.add(_),I.position.copy(V),I.up.set(0,1,0),I.up.applyMatrix4(P),I.up.reflect(B),I.lookAt(W),I.far=g.far,I.updateMatrixWorld(),I.projectionMatrix.copy(g.projectionMatrix),q.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),q.multiply(I.projectionMatrix),q.multiply(I.matrixWorldInverse),q.multiply(t.matrixWorld),D.setFromNormalAndCoplanarPoint(B,_),D.applyMatrix4(I.matrixWorldInverse),E.set(D.normal.x,D.normal.y,D.normal.z,D.constant);const r=I.projectionMatrix;F.x=(Math.sign(E.x)+r.elements[8])/r.elements[0],F.y=(Math.sign(E.y)+r.elements[9])/r.elements[5],F.z=-1,F.w=(1+r.elements[10])/r.elements[14],E.multiplyScalar(2/E.dot(F)),r.elements[2]=E.x,r.elements[6]=E.y,r.elements[10]=E.z+1,r.elements[14]=E.w}),[g,T]),[k,L,z,A]=d.useMemo((()=>{const a={minFilter:r.LinearFilter,magFilter:r.LinearFilter,encoding:w.outputEncoding},u=new r.WebGLRenderTarget(n,n,a);u.depthBuffer=!0,u.depthTexture=new r.DepthTexture(n,n),u.depthTexture.format=r.DepthFormat,u.depthTexture.type=r.UnsignedShortType;const d=new r.WebGLRenderTarget(n,n,a);return[u,d,new i.BlurPass({gl:w,resolution:n,width:o[0],height:o[1],minDepthThreshold:s,maxDepthThreshold:l,depthScale:p,depthToBlurRatioBias:m}),{mirror:h,textureMatrix:q,mixBlur:e,tDiffuse:u.texture,tDepth:u.depthTexture,tDiffuseBlur:d.texture,hasBlur:v,mixStrength:t,minDepthThreshold:s,maxDepthThreshold:l,depthScale:p,depthToBlurRatioBias:m,transparent:!0,debug:f,distortion:x,distortionMap:S,mixContrast:M,"defines-USE_BLUR":v?"":void 0,"defines-USE_DEPTH":p>0?"":void 0,"defines-USE_DISTORTION":S?"":void 0}]}),[w,o,q,n,h,v,e,t,s,l,p,m,f,x,S,M]);return a.useFrame((()=>{var e;const t=j.current.parent||(null==(e=j.current)?void 0:e.__r3f.parent);if(!t)return;t.visible=!1;const r=w.xr.enabled,a=w.shadowMap.autoUpdate;C(),w.xr.enabled=!1,w.shadowMap.autoUpdate=!1,w.setRenderTarget(k),w.state.buffers.depth.setMask(!0),w.autoClear||w.clear(),w.render(R,I),v&&z.render(w,k,L),w.xr.enabled=r,w.shadowMap.autoUpdate=a,t.visible=!0,w.setRenderTarget(null)})),d.createElement("meshReflectorMaterialImpl",u.default({attach:"material",key:"key"+A["defines-USE_BLUR"]+A["defines-USE_DEPTH"]+A["defines-USE_DISTORTION"],ref:c.default([j,y])},A,b))}));exports.MeshReflectorMaterial=p;
|
|
@@ -11,6 +11,7 @@ export declare type Props = JSX.IntrinsicElements['meshStandardMaterial'] & {
|
|
|
11
11
|
maxDepthThreshold?: number;
|
|
12
12
|
depthScale?: number;
|
|
13
13
|
depthToBlurRatioBias?: number;
|
|
14
|
+
debug?: number;
|
|
14
15
|
distortionMap?: Texture;
|
|
15
16
|
distortion?: number;
|
|
16
17
|
mixContrast?: number;
|
|
@@ -23,4 +24,4 @@ declare global {
|
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
|
-
export declare const MeshReflectorMaterial: React.ForwardRefExoticComponent<Pick<Props, "
|
|
27
|
+
export declare const MeshReflectorMaterial: React.ForwardRefExoticComponent<Pick<Props, "attach" | "args" | "children" | "key" | "onUpdate" | "blur" | "resolution" | keyof import("three").MeshStandardMaterial | "minDepthThreshold" | "maxDepthThreshold" | "depthScale" | "depthToBlurRatioBias" | "mixBlur" | "mixStrength" | "mirror" | "debug" | "distortion" | "mixContrast" | "distortionMap" | "reflectorOffset"> & React.RefAttributes<MeshReflectorMaterialImpl>>;
|
|
@@ -19,6 +19,7 @@ const MeshReflectorMaterial = /*#__PURE__*/React.forwardRef(({
|
|
|
19
19
|
depthScale = 0,
|
|
20
20
|
depthToBlurRatioBias = 0.25,
|
|
21
21
|
mirror = 0,
|
|
22
|
+
debug = 0,
|
|
22
23
|
distortion = 1,
|
|
23
24
|
mixContrast = 1,
|
|
24
25
|
distortionMap,
|
|
@@ -141,6 +142,7 @@ const MeshReflectorMaterial = /*#__PURE__*/React.forwardRef(({
|
|
|
141
142
|
depthScale,
|
|
142
143
|
depthToBlurRatioBias,
|
|
143
144
|
transparent: true,
|
|
145
|
+
debug,
|
|
144
146
|
distortion,
|
|
145
147
|
distortionMap,
|
|
146
148
|
mixContrast,
|
|
@@ -149,7 +151,7 @@ const MeshReflectorMaterial = /*#__PURE__*/React.forwardRef(({
|
|
|
149
151
|
'defines-USE_DISTORTION': distortionMap ? '' : undefined
|
|
150
152
|
};
|
|
151
153
|
return [fbo1, fbo2, blurpass, reflectorProps];
|
|
152
|
-
}, [gl, blur, textureMatrix, resolution, mirror, hasBlur, mixBlur, mixStrength, minDepthThreshold, maxDepthThreshold, depthScale, depthToBlurRatioBias, distortion, distortionMap, mixContrast]);
|
|
154
|
+
}, [gl, blur, textureMatrix, resolution, mirror, hasBlur, mixBlur, mixStrength, minDepthThreshold, maxDepthThreshold, depthScale, depthToBlurRatioBias, debug, distortion, distortionMap, mixContrast]);
|
|
153
155
|
useFrame(() => {
|
|
154
156
|
var _materialRef$current2;
|
|
155
157
|
|
|
@@ -12,14 +12,12 @@ declare global {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
export declare const MeshWobbleMaterial: React.ForwardRefExoticComponent<Pick<
|
|
16
|
-
color?: import("@react-three/fiber").Color | undefined;
|
|
17
|
-
} & {
|
|
15
|
+
export declare const MeshWobbleMaterial: React.ForwardRefExoticComponent<Pick<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<MeshStandardMaterial>, import("@react-three/fiber").NodeProps<MeshStandardMaterial, [MeshStandardMaterialParameters]>>> & {
|
|
18
16
|
time?: number | undefined;
|
|
19
17
|
factor?: number | undefined;
|
|
20
18
|
speed?: number | undefined;
|
|
21
19
|
} & {
|
|
22
20
|
speed?: number | undefined;
|
|
23
21
|
factor?: number | undefined;
|
|
24
|
-
}, "
|
|
22
|
+
}, "attach" | "args" | "children" | "key" | "onUpdate" | "time" | "speed" | "factor" | keyof MeshStandardMaterial> & React.RefAttributes<unknown>>;
|
|
25
23
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(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 a=o(e),u=s(r);const c=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(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 a=o(e),u=s(r);const c=r.forwardRef((({makeDefault:e,camera:o,regress:s,domElement:c,enableDamping:i=!0,onChange:d,onStart:l,onEnd:f,...b},m)=>{const v=t.useThree((({invalidate:e})=>e)),p=t.useThree((({camera:e})=>e)),h=t.useThree((({gl:e})=>e)),E=t.useThree((({events:e})=>e)),g=t.useThree((({set:e})=>e)),O=t.useThree((({get:e})=>e)),j=t.useThree((({performance:e})=>e)),T=o||p,y=c||("boolean"!=typeof E.connected?E.connected:h.domElement),L=r.useMemo((()=>new n.OrbitControls(T)),[T]);return t.useFrame((()=>{L.enabled&&L.update()})),r.useEffect((()=>{const e=e=>{v(),s&&j.regress(),d&&d(e)};return L.connect(y),L.addEventListener("change",e),l&&L.addEventListener("start",l),f&&L.addEventListener("end",f),()=>{L.removeEventListener("change",e),l&&L.removeEventListener("start",l),f&&L.removeEventListener("end",f),L.dispose()}}),[y,d,l,f,s,L,v]),r.useEffect((()=>{if(e){const e=O().controls;return g({controls:L}),()=>g({controls:e})}}),[e,L]),u.createElement("primitive",a.default({ref:m,object:L,enableDamping:i},b))}));exports.OrbitControls=c;
|
package/core/OrbitControls.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
2
|
import { useThree, useFrame } from '@react-three/fiber';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import { forwardRef, useMemo, useEffect } from 'react';
|
|
4
5
|
import { OrbitControls as OrbitControls$1 } from 'three-stdlib';
|
|
5
6
|
|
|
6
|
-
const OrbitControls = /*#__PURE__*/
|
|
7
|
+
const OrbitControls = /*#__PURE__*/forwardRef(({
|
|
7
8
|
makeDefault,
|
|
8
9
|
camera,
|
|
9
10
|
regress,
|
|
@@ -14,48 +15,57 @@ const OrbitControls = /*#__PURE__*/React.forwardRef(({
|
|
|
14
15
|
onEnd,
|
|
15
16
|
...restProps
|
|
16
17
|
}, ref) => {
|
|
17
|
-
const invalidate = useThree(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
18
|
+
const invalidate = useThree(({
|
|
19
|
+
invalidate
|
|
20
|
+
}) => invalidate);
|
|
21
|
+
const defaultCamera = useThree(({
|
|
22
|
+
camera
|
|
23
|
+
}) => camera);
|
|
24
|
+
const gl = useThree(({
|
|
25
|
+
gl
|
|
26
|
+
}) => gl);
|
|
27
|
+
const events = useThree(({
|
|
28
|
+
events
|
|
29
|
+
}) => events);
|
|
30
|
+
const set = useThree(({
|
|
31
|
+
set
|
|
32
|
+
}) => set);
|
|
33
|
+
const get = useThree(({
|
|
34
|
+
get
|
|
35
|
+
}) => get);
|
|
36
|
+
const performance = useThree(({
|
|
37
|
+
performance
|
|
38
|
+
}) => performance);
|
|
24
39
|
const explCamera = camera || defaultCamera;
|
|
25
40
|
const explDomElement = domElement || (typeof events.connected !== 'boolean' ? events.connected : gl.domElement);
|
|
26
|
-
const controls =
|
|
41
|
+
const controls = useMemo(() => new OrbitControls$1(explCamera), [explCamera]);
|
|
27
42
|
useFrame(() => {
|
|
28
43
|
if (controls.enabled) controls.update();
|
|
29
44
|
});
|
|
30
|
-
|
|
31
|
-
controls.connect(explDomElement);
|
|
32
|
-
return () => void controls.dispose();
|
|
33
|
-
}, [explDomElement, regress, controls, invalidate]);
|
|
34
|
-
React.useEffect(() => {
|
|
45
|
+
useEffect(() => {
|
|
35
46
|
const callback = e => {
|
|
36
47
|
invalidate();
|
|
37
48
|
if (regress) performance.regress();
|
|
38
49
|
if (onChange) onChange(e);
|
|
39
50
|
};
|
|
40
51
|
|
|
52
|
+
controls.connect(explDomElement);
|
|
41
53
|
controls.addEventListener('change', callback);
|
|
42
54
|
if (onStart) controls.addEventListener('start', onStart);
|
|
43
55
|
if (onEnd) controls.addEventListener('end', onEnd);
|
|
44
56
|
return () => {
|
|
57
|
+
controls.removeEventListener('change', callback);
|
|
45
58
|
if (onStart) controls.removeEventListener('start', onStart);
|
|
46
59
|
if (onEnd) controls.removeEventListener('end', onEnd);
|
|
47
|
-
controls.
|
|
60
|
+
controls.dispose();
|
|
48
61
|
};
|
|
49
|
-
}, [onChange, onStart, onEnd]);
|
|
50
|
-
|
|
62
|
+
}, [explDomElement, onChange, onStart, onEnd, regress, controls, invalidate]);
|
|
63
|
+
useEffect(() => {
|
|
51
64
|
if (makeDefault) {
|
|
52
|
-
|
|
53
|
-
const old = get().controls; // @ts-expect-error new in @react-three/fiber@7.0.5
|
|
54
|
-
|
|
65
|
+
const old = get().controls;
|
|
55
66
|
set({
|
|
56
67
|
controls
|
|
57
|
-
});
|
|
58
|
-
|
|
68
|
+
});
|
|
59
69
|
return () => set({
|
|
60
70
|
controls: old
|
|
61
71
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { OrthographicCamera as OrthographicCameraImpl } from 'three';
|
|
3
|
-
export declare const OrthographicCamera: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").
|
|
3
|
+
export declare const OrthographicCamera: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<OrthographicCameraImpl>, import("@react-three/fiber").NodeProps<OrthographicCameraImpl, typeof OrthographicCameraImpl>>>, import("@react-three/fiber").NonFunctionKeys<{
|
|
4
4
|
position?: import("@react-three/fiber").Vector3 | undefined;
|
|
5
5
|
up?: import("@react-three/fiber").Vector3 | undefined;
|
|
6
6
|
scale?: import("@react-three/fiber").Vector3 | undefined;
|
|
@@ -22,4 +22,4 @@ export declare const OrthographicCamera: React.ForwardRefExoticComponent<Pick<Om
|
|
|
22
22
|
makeDefault?: boolean | undefined;
|
|
23
23
|
manual?: boolean | undefined;
|
|
24
24
|
children?: React.ReactNode;
|
|
25
|
-
}, "visible" | "attach" | "
|
|
25
|
+
}, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "left" | "right" | "bottom" | "top" | "manual" | "zoom" | "view" | "isOrthographicCamera" | "near" | "far" | "updateProjectionMatrix" | "setViewOffset" | "clearViewOffset" | "matrixWorldInverse" | "projectionMatrix" | "projectionMatrixInverse" | "isCamera" | "makeDefault"> & React.RefAttributes<unknown>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { PerspectiveCamera as PerspectiveCameraImpl } from 'three';
|
|
3
|
-
export declare const PerspectiveCamera: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").
|
|
3
|
+
export declare const PerspectiveCamera: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<PerspectiveCameraImpl>, import("@react-three/fiber").NodeProps<PerspectiveCameraImpl, typeof PerspectiveCameraImpl>>>, import("@react-three/fiber").NonFunctionKeys<{
|
|
4
4
|
position?: import("@react-three/fiber").Vector3 | undefined;
|
|
5
5
|
up?: import("@react-three/fiber").Vector3 | undefined;
|
|
6
6
|
scale?: import("@react-three/fiber").Vector3 | undefined;
|
|
@@ -22,4 +22,4 @@ export declare const PerspectiveCamera: React.ForwardRefExoticComponent<Pick<Omi
|
|
|
22
22
|
makeDefault?: boolean | undefined;
|
|
23
23
|
manual?: boolean | undefined;
|
|
24
24
|
children?: React.ReactNode;
|
|
25
|
-
}, "visible" | "attach" | "
|
|
25
|
+
}, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "manual" | "zoom" | "view" | "focus" | "near" | "far" | "updateProjectionMatrix" | "setViewOffset" | "clearViewOffset" | "matrixWorldInverse" | "projectionMatrix" | "projectionMatrixInverse" | "isCamera" | "makeDefault" | "isPerspectiveCamera" | "fov" | "aspect" | "filmGauge" | "filmOffset" | "setFocalLength" | "getFocalLength" | "getEffectiveFOV" | "getFilmWidth" | "getFilmHeight" | "setLens"> & React.RefAttributes<unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(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 a=n(e),i=o(r),l=o(t);class c extends i.ShaderMaterial{constructor(){super({transparent:!0,uniforms:{size:{value:1}},vertexShader:i.ShaderLib.points.vertexShader,fragmentShader:"\n varying vec3 vColor;\n void main() {\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float r = dot(cxy, cxy);\n float delta = fwidth(r);\n vec3 color = vColor;\n #ifdef TONE_MAPPING\n color = toneMapping(color);\n #endif\n gl_FragColor = linearToOutputTexel(vec4(color, 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r)));\n }",vertexColors:!0})}get scale(){return this.uniforms.size.value}set scale(e){this.uniforms.size.value=e}}const u=l.forwardRef(((e,r)=>{const[t]=l.useState((()=>new c));return l.createElement("primitive",a.default({object:t,ref:r,attach:"material"},e))}));exports.PointMaterial=u,exports.PointMaterialImpl=c;
|
package/core/PointMaterial.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
declare type PointMaterialType = JSX.IntrinsicElements['
|
|
3
|
+
declare type PointMaterialType = JSX.IntrinsicElements['shaderMaterial'] & {
|
|
4
|
+
scale?: number;
|
|
5
|
+
};
|
|
4
6
|
declare global {
|
|
5
7
|
namespace JSX {
|
|
6
8
|
interface IntrinsicElements {
|
|
@@ -8,8 +10,10 @@ declare global {
|
|
|
8
10
|
}
|
|
9
11
|
}
|
|
10
12
|
}
|
|
11
|
-
export declare class PointMaterialImpl extends THREE.
|
|
12
|
-
constructor(
|
|
13
|
+
export declare class PointMaterialImpl extends THREE.ShaderMaterial {
|
|
14
|
+
constructor();
|
|
15
|
+
get scale(): any;
|
|
16
|
+
set scale(v: any);
|
|
13
17
|
}
|
|
14
18
|
export declare const PointMaterial: React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
|
|
15
19
|
export {};
|
package/core/PointMaterial.js
CHANGED
|
@@ -2,25 +2,43 @@ import _extends from '@babel/runtime/helpers/esm/extends';
|
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
|
|
5
|
-
class PointMaterialImpl extends THREE.
|
|
6
|
-
constructor(
|
|
7
|
-
super(
|
|
5
|
+
class PointMaterialImpl extends THREE.ShaderMaterial {
|
|
6
|
+
constructor() {
|
|
7
|
+
super({
|
|
8
|
+
transparent: true,
|
|
9
|
+
uniforms: {
|
|
10
|
+
size: {
|
|
11
|
+
value: 1
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
vertexShader: THREE.ShaderLib.points.vertexShader,
|
|
15
|
+
fragmentShader: `
|
|
16
|
+
varying vec3 vColor;
|
|
17
|
+
void main() {
|
|
18
|
+
vec2 cxy = 2.0 * gl_PointCoord - 1.0;
|
|
19
|
+
float r = dot(cxy, cxy);
|
|
20
|
+
float delta = fwidth(r);
|
|
21
|
+
vec3 color = vColor;
|
|
22
|
+
#ifdef TONE_MAPPING
|
|
23
|
+
color = toneMapping(color);
|
|
24
|
+
#endif
|
|
25
|
+
gl_FragColor = linearToOutputTexel(vec4(color, 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r)));
|
|
26
|
+
}`,
|
|
27
|
+
vertexColors: true
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
get scale() {
|
|
32
|
+
return this.uniforms.size.value;
|
|
33
|
+
}
|
|
8
34
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
#include <output_fragment>
|
|
12
|
-
vec2 cxy = 2.0 * gl_PointCoord - 1.0;
|
|
13
|
-
float r = dot(cxy, cxy);
|
|
14
|
-
float delta = fwidth(r);
|
|
15
|
-
float mask = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);
|
|
16
|
-
gl_FragColor = vec4(gl_FragColor.rgb, mask * gl_FragColor.a );
|
|
17
|
-
`);
|
|
18
|
-
};
|
|
35
|
+
set scale(v) {
|
|
36
|
+
this.uniforms.size.value = v;
|
|
19
37
|
}
|
|
20
38
|
|
|
21
39
|
}
|
|
22
40
|
const PointMaterial = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
23
|
-
const [material] = React.useState(() => new PointMaterialImpl(
|
|
41
|
+
const [material] = React.useState(() => new PointMaterialImpl());
|
|
24
42
|
return /*#__PURE__*/React.createElement("primitive", _extends({
|
|
25
43
|
object: material,
|
|
26
44
|
ref: ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),n=require("react"),r=require("three-stdlib");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var u=l(e),c=o(n);const i=c.forwardRef((({selector:e,onChange:n,onLock:l,onUnlock:o,...i},a)=>{const{camera:d,...s}=i,f=t.useThree((({gl:e})=>e)),v=t.useThree((({camera:e})=>e)),E=t.useThree((({invalidate:e})=>e)),L=d||v,[m]=c.useState((()=>new r.PointerLockControls(L,f.domElement)));return c.useEffect((()=>{const e=e=>{E(),n&&n(e)};return null==m||null==m.addEventListener||m.addEventListener("change",e),l&&(null==m||null==m.addEventListener||m.addEventListener("lock",l)),o&&(null==m||null==m.addEventListener||m.addEventListener("unlock",o)),()=>{null==m||null==m.removeEventListener||m.removeEventListener("change",e),l&&(null==m||null==m.addEventListener||m.addEventListener("lock",l)),o&&(null==m||null==m.addEventListener||m.addEventListener("unlock",o))}}),[n,l,o,m,E]),c.useEffect((()=>{const t=()=>null==m?void 0:m.lock(),n=e?Array.from(document.querySelectorAll(e)):[document];return n.forEach((e=>e&&e.addEventListener("click",t))),()=>{n.forEach((e=>e?e.removeEventListener("click",t):void 0))}}),[m,e]),m?c.createElement("primitive",u.default({ref:a,dispose:void 0,object:m},s)):null}));exports.PointerLockControls=i;
|
|
@@ -4,10 +4,9 @@ import * as THREE from 'three';
|
|
|
4
4
|
import { PointerLockControls as PointerLockControlsImpl } from 'three-stdlib';
|
|
5
5
|
export declare type PointerLockControlsProps = ReactThreeFiber.Object3DNode<PointerLockControlsImpl, typeof PointerLockControlsImpl> & {
|
|
6
6
|
selector?: string;
|
|
7
|
-
enabled?: boolean;
|
|
8
7
|
camera?: THREE.Camera;
|
|
9
8
|
onChange?: (e?: THREE.Event) => void;
|
|
10
9
|
onLock?: (e?: THREE.Event) => void;
|
|
11
10
|
onUnlock?: (e?: THREE.Event) => void;
|
|
12
11
|
};
|
|
13
|
-
export declare const PointerLockControls: React.ForwardRefExoticComponent<Pick<PointerLockControlsProps, "attach" | "
|
|
12
|
+
export declare const PointerLockControls: React.ForwardRefExoticComponent<Pick<PointerLockControlsProps, "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "connect" | "disconnect" | "domElement" | "minPolarAngle" | "maxPolarAngle" | "isLocked" | "getDirection" | "moveForward" | "moveRight" | "lock" | "unlock" | "selector" | "onLock" | "onUnlock"> & React.RefAttributes<PointerLockControlsImpl>>;
|
|
@@ -8,7 +8,6 @@ const PointerLockControls = /*#__PURE__*/React.forwardRef(({
|
|
|
8
8
|
onChange,
|
|
9
9
|
onLock,
|
|
10
10
|
onUnlock,
|
|
11
|
-
enabled = true,
|
|
12
11
|
...props
|
|
13
12
|
}, ref) => {
|
|
14
13
|
const {
|
|
@@ -18,55 +17,43 @@ const PointerLockControls = /*#__PURE__*/React.forwardRef(({
|
|
|
18
17
|
const gl = useThree(({
|
|
19
18
|
gl
|
|
20
19
|
}) => gl);
|
|
21
|
-
const defaultCamera = useThree(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
20
|
+
const defaultCamera = useThree(({
|
|
21
|
+
camera
|
|
22
|
+
}) => camera);
|
|
23
|
+
const invalidate = useThree(({
|
|
24
|
+
invalidate
|
|
25
|
+
}) => invalidate);
|
|
25
26
|
const explCamera = camera || defaultCamera;
|
|
26
|
-
const
|
|
27
|
-
const [controls] = React.useState(() => new PointerLockControls$1(explCamera));
|
|
28
|
-
React.useEffect(() => {
|
|
29
|
-
if (enabled) {
|
|
30
|
-
controls.connect(explDomElement); // Force events to be centered while PLC is active
|
|
31
|
-
|
|
32
|
-
const oldComputeOffsets = raycaster.computeOffsets;
|
|
33
|
-
|
|
34
|
-
raycaster.computeOffsets = e => ({
|
|
35
|
-
offsetX: e.target.width / 2,
|
|
36
|
-
offsetY: e.target.height / 2
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
return () => {
|
|
40
|
-
controls.disconnect();
|
|
41
|
-
raycaster.computeOffsets = oldComputeOffsets;
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}, [enabled, controls]);
|
|
27
|
+
const [controls] = React.useState(() => new PointerLockControls$1(explCamera, gl.domElement));
|
|
45
28
|
React.useEffect(() => {
|
|
46
29
|
const callback = e => {
|
|
47
30
|
invalidate();
|
|
48
31
|
if (onChange) onChange(e);
|
|
49
32
|
};
|
|
50
33
|
|
|
51
|
-
controls.addEventListener('change', callback);
|
|
52
|
-
if (onLock) controls.addEventListener('lock', onLock);
|
|
53
|
-
if (onUnlock) controls.addEventListener('unlock', onUnlock);
|
|
54
|
-
|
|
55
|
-
|
|
34
|
+
controls == null ? void 0 : controls.addEventListener == null ? void 0 : controls.addEventListener('change', callback);
|
|
35
|
+
if (onLock) controls == null ? void 0 : controls.addEventListener == null ? void 0 : controls.addEventListener('lock', onLock);
|
|
36
|
+
if (onUnlock) controls == null ? void 0 : controls.addEventListener == null ? void 0 : controls.addEventListener('unlock', onUnlock);
|
|
37
|
+
return () => {
|
|
38
|
+
controls == null ? void 0 : controls.removeEventListener == null ? void 0 : controls.removeEventListener('change', callback);
|
|
39
|
+
if (onLock) controls == null ? void 0 : controls.addEventListener == null ? void 0 : controls.addEventListener('lock', onLock);
|
|
40
|
+
if (onUnlock) controls == null ? void 0 : controls.addEventListener == null ? void 0 : controls.addEventListener('unlock', onUnlock);
|
|
41
|
+
};
|
|
42
|
+
}, [onChange, onLock, onUnlock, controls, invalidate]);
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
const handler = () => controls == null ? void 0 : controls.lock();
|
|
56
45
|
|
|
57
46
|
const elements = selector ? Array.from(document.querySelectorAll(selector)) : [document];
|
|
58
47
|
elements.forEach(element => element && element.addEventListener('click', handler));
|
|
59
48
|
return () => {
|
|
60
|
-
controls.removeEventListener('change', callback);
|
|
61
|
-
if (onLock) controls.addEventListener('lock', onLock);
|
|
62
|
-
if (onUnlock) controls.addEventListener('unlock', onUnlock);
|
|
63
49
|
elements.forEach(element => element ? element.removeEventListener('click', handler) : undefined);
|
|
64
50
|
};
|
|
65
|
-
}, [
|
|
66
|
-
return /*#__PURE__*/React.createElement("primitive", _extends({
|
|
51
|
+
}, [controls, selector]);
|
|
52
|
+
return controls ? /*#__PURE__*/React.createElement("primitive", _extends({
|
|
67
53
|
ref: ref,
|
|
54
|
+
dispose: undefined,
|
|
68
55
|
object: controls
|
|
69
|
-
}, rest));
|
|
56
|
+
}, rest)) : null;
|
|
70
57
|
});
|
|
71
58
|
|
|
72
59
|
export { PointerLockControls };
|
package/core/Points.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),a=require("@react-three/fiber"),n=require("react-merge-refs"),u=require("../helpers/Position.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=o(e),c=i(t),l=i(r),f=o(n);let d,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),a=require("@react-three/fiber"),n=require("react-merge-refs"),u=require("../helpers/Position.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=o(e),c=i(t),l=i(r),f=o(n);let d,m;const b=l.createContext(null),y=new c.Matrix4,g=new c.Vector3,p=new c.Color,h=l.forwardRef((({children:e,range:t,limit:r=1e3,...n},u)=>{const o=l.useRef(null),[i,h]=l.useState([]),[[x,E,w]]=l.useState((()=>[new Float32Array(3*r),Float32Array.from({length:3*r},(()=>1)),Float32Array.from({length:r},(()=>1))]));l.useLayoutEffect((()=>{o.current.geometry.drawRange.count=Math.min(r,void 0!==t?t:r,i.length)}),[i,t]),l.useEffect((()=>{o.current.geometry.attributes.position.needsUpdate=!0})),a.useFrame((()=>{for(o.current.updateMatrix(),o.current.updateMatrixWorld(),y.copy(o.current.matrixWorld).invert(),d=0;d<i.length;d++)m=i[d].current,m.getWorldPosition(g).applyMatrix4(y),g.x===x[3*d]&&g.y===x[3*d+1]&&g.z===x[3*d+2]||(g.toArray(x,3*d),o.current.geometry.attributes.position.needsUpdate=!0,m.matrixWorldNeedsUpdate=!0),m.color.equals(p.fromArray(E,3*d))||(m.color.toArray(E,3*d),o.current.geometry.attributes.color.needsUpdate=!0),m.size!==w[d]&&(w.set([m.size],d),o.current.geometry.attributes.size.needsUpdate=!0)}));const U=l.useMemo((()=>{const e={};for(d=0;d<i.length;d++){var t;Object.assign(e,null==(t=i[d].current)?void 0:t.__r3f.handlers)}return Object.keys(e).reduce(((e,t)=>({...e,[t]:e=>{var r,a,n;const u=null==(r=i[e.index])?void 0:r.current;return null==u||null==(a=u.__r3f)||null==(n=a.handlers)?void 0:n[t]({...e,object:u})}})),{})}),[e,i]),z=l.useMemo((()=>({subscribe:e=>(h((t=>[...t,e])),()=>h((t=>t.filter((t=>t.current!==e.current)))))})),[]);return l.createElement("points",s.default({matrixAutoUpdate:!1,ref:f.default([u,o])},U,n),l.createElement("bufferGeometry",null,l.createElement("bufferAttribute",{attach:"attributes-position",count:x.length/3,array:x,itemSize:3,usage:c.DynamicDrawUsage}),l.createElement("bufferAttribute",{attach:"attributes-color",count:E.length/3,array:E,itemSize:3,usage:c.DynamicDrawUsage}),l.createElement("bufferAttribute",{attach:"attributes-size",count:w.length,array:w,itemSize:1,usage:c.DynamicDrawUsage})),l.createElement(b.Provider,{value:z},e))})),x=l.forwardRef((({children:e,...t},r)=>{l.useMemo((()=>a.extend({Position:u.Position})),[]);const n=l.useRef(),{subscribe:o}=l.useContext(b);return l.useLayoutEffect((()=>o(n)),[]),l.createElement("position",s.default({ref:f.default([r,n])},t),e)})),E=l.forwardRef((({children:e,positions:t,colors:r,sizes:n,stride:u=3,...o},i)=>{const d=l.useRef(null);return a.useFrame((()=>{const e=d.current.geometry.attributes;e.position.needsUpdate=!0,r&&(e.color.needsUpdate=!0),n&&(e.size.needsUpdate=!0)})),l.createElement("points",s.default({matrixAutoUpdate:!1,ref:f.default([i,d])},o),l.createElement("bufferGeometry",null,l.createElement("bufferAttribute",{attach:"attributes-position",count:t.length/u,array:t,itemSize:u,usage:c.DynamicDrawUsage}),r&&l.createElement("bufferAttribute",{attach:"attributes-color",count:r.length/u,array:r,itemSize:3,usage:c.DynamicDrawUsage}),n&&l.createElement("bufferAttribute",{attach:"attributes-size",count:n.length/u,array:n,itemSize:1,usage:c.DynamicDrawUsage})),e)})),w=l.forwardRef(((e,t)=>e.positions instanceof Float32Array?l.createElement(E,s.default({},e,{ref:t})):l.createElement(h,s.default({},e,{ref:t}))));exports.Point=x,exports.Points=w,exports.PointsBuffer=E;
|