@react-three/drei 9.0.0-beta.1 → 9.0.0-beta.4
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 +461 -48
- package/core/ArcballControls.cjs.js +1 -1
- package/core/ArcballControls.d.ts +8 -8
- package/core/ArcballControls.js +19 -30
- package/core/Bounds.cjs.js +1 -1
- package/core/Bounds.d.ts +2 -1
- package/core/Bounds.js +25 -14
- package/core/Clone.cjs.js +1 -0
- package/core/Clone.d.ts +11 -0
- package/core/Clone.js +92 -0
- package/core/Cloud.cjs.js +1 -1
- package/core/Cloud.d.ts +4 -1
- package/core/Cloud.js +7 -3
- package/core/ComputedAttribute.cjs.js +1 -0
- package/core/ComputedAttribute.d.ts +9 -0
- package/core/ComputedAttribute.js +34 -0
- package/core/ContactShadows.cjs.js +1 -1
- package/core/ContactShadows.d.ts +4 -1
- package/core/ContactShadows.js +33 -13
- package/core/CubeCamera.cjs.js +1 -1
- package/core/CubeCamera.js +6 -7
- package/core/CurveModifier.cjs.js +1 -1
- package/core/CurveModifier.js +18 -22
- package/core/Detailed.d.ts +1 -1
- package/core/DeviceOrientationControls.cjs.js +1 -1
- package/core/DeviceOrientationControls.js +2 -6
- package/core/Effects.cjs.js +1 -1
- package/core/Effects.d.ts +3 -2
- package/core/Effects.js +2 -2
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.d.ts +13 -3
- package/core/Environment.js +100 -56
- package/core/FirstPersonControls.cjs.js +1 -1
- package/core/FirstPersonControls.d.ts +1 -1
- package/core/FirstPersonControls.js +2 -6
- package/core/Float.cjs.js +1 -1
- package/core/Float.d.ts +1 -1
- package/core/Float.js +5 -4
- package/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoHelper.d.ts +2 -1
- package/core/GizmoHelper.js +31 -41
- package/core/GizmoViewcube.cjs.js +1 -1
- package/core/GizmoViewcube.js +1 -1
- package/core/GradientTexture.cjs.js +1 -1
- package/core/GradientTexture.js +5 -2
- package/core/Image.cjs.js +1 -1
- package/core/Image.d.ts +6 -4
- package/core/Image.js +6 -1
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.d.ts +2 -2
- package/core/Instances.js +5 -11
- package/core/Lightformer.cjs.js +1 -0
- package/core/Lightformer.d.ts +41 -0
- package/core/Lightformer.js +51 -0
- 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 -2
- package/core/MeshReflectorMaterial.js +7 -7
- package/core/MeshWobbleMaterial.d.ts +2 -4
- package/core/OrbitControls.cjs.js +1 -1
- package/core/OrbitControls.d.ts +10 -10
- package/core/OrbitControls.js +14 -26
- package/core/OrthographicCamera.d.ts +1 -1
- package/core/PerspectiveCamera.d.ts +1 -1
- package/core/PointMaterial.cjs.js +1 -1
- package/core/PointMaterial.d.ts +5 -8
- package/core/PointMaterial.js +16 -34
- package/core/PointerLockControls.cjs.js +1 -1
- package/core/PointerLockControls.d.ts +3 -1
- package/core/PointerLockControls.js +36 -22
- package/core/Points.cjs.js +1 -1
- package/core/Points.d.ts +3 -3
- package/core/Points.js +11 -30
- package/core/PositionalAudio.d.ts +1 -1
- package/core/Reflector.cjs.js +1 -1
- package/core/Reflector.d.ts +1 -1
- package/core/Reflector.js +1 -2
- package/core/RoundedBox.cjs.js +1 -1
- package/core/RoundedBox.d.ts +2 -1
- package/core/RoundedBox.js +2 -1
- package/core/Sampler.cjs.js +1 -0
- package/core/Sampler.d.ts +21 -0
- package/core/Sampler.js +65 -0
- package/core/Shadow.d.ts +1 -1
- package/core/SpotLight.d.ts +20 -4
- package/core/Stage.cjs.js +1 -1
- package/core/Stage.d.ts +1 -1
- package/core/Stage.js +1 -2
- package/core/Stars.cjs.js +1 -1
- package/core/Stars.js +3 -0
- package/core/Stats.cjs.js +1 -1
- package/core/Stats.js +2 -2
- package/core/Text.cjs.js +1 -1
- package/core/Text.d.ts +3 -2
- package/core/Text.js +9 -1
- package/core/TrackballControls.cjs.js +1 -1
- package/core/TrackballControls.js +7 -5
- package/core/Trail.cjs.js +1 -0
- package/core/Trail.d.ts +21 -0
- package/core/Trail.js +160 -0
- package/core/TransformControls.cjs.js +1 -1
- package/core/TransformControls.d.ts +1 -1
- package/core/TransformControls.js +13 -11
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +6 -0
- package/core/index.js +11 -4
- package/core/shaderMaterial.d.ts +1 -1
- package/core/useBoxProjectedEnv.cjs.js +1 -0
- package/core/useBoxProjectedEnv.d.ts +8 -0
- package/core/useBoxProjectedEnv.js +98 -0
- package/core/useDetectGPU.cjs.js +1 -1
- package/core/useDetectGPU.js +2 -2
- package/core/useFBO.cjs.js +1 -1
- package/core/useFBO.d.ts +1 -1
- package/core/useFBO.js +22 -24
- package/core/useHelper.cjs.js +1 -1
- package/core/useHelper.d.ts +4 -1
- package/core/useHelper.js +16 -6
- package/core/useMatcapTexture.cjs.js +1 -1
- package/core/useMatcapTexture.js +2 -5
- package/core/useNormalTexture.cjs.js +1 -1
- package/core/useNormalTexture.js +2 -5
- package/helpers/Position.cjs.js +1 -1
- package/helpers/Position.js +3 -2
- package/helpers/environment-assets.cjs.js +1 -1
- package/helpers/environment-assets.js +10 -10
- package/index.cjs.js +1 -1
- package/index.js +7 -1
- package/materials/ConvolutionMaterial.cjs.js +1 -1
- package/materials/ConvolutionMaterial.js +2 -0
- package/materials/MeshReflectorMaterial.cjs.js +1 -1
- package/materials/MeshReflectorMaterial.d.ts +0 -3
- package/materials/MeshReflectorMaterial.js +8 -35
- package/materials/SpotLightMaterial.cjs.js +1 -1
- package/materials/SpotLightMaterial.js +3 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +11 -4
- package/package.json +8 -7
- package/web/Html.cjs.js +1 -1
- package/web/Html.js +4 -5
- package/web/ScrollControls.cjs.js +1 -1
- package/web/ScrollControls.js +6 -5
- package/web/Select.cjs.js +1 -1
- package/web/Select.d.ts +2 -1
- package/web/Select.js +3 -2
- package/web/index.cjs.js +1 -1
- package/web/index.js +12 -5
package/core/OrbitControls.js
CHANGED
|
@@ -14,33 +14,23 @@ const OrbitControls = /*#__PURE__*/React.forwardRef(({
|
|
|
14
14
|
onEnd,
|
|
15
15
|
...restProps
|
|
16
16
|
}, ref) => {
|
|
17
|
-
const invalidate = useThree(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
gl
|
|
25
|
-
}) => gl);
|
|
26
|
-
const events = useThree(({
|
|
27
|
-
events
|
|
28
|
-
}) => events);
|
|
29
|
-
const set = useThree(({
|
|
30
|
-
set
|
|
31
|
-
}) => set);
|
|
32
|
-
const get = useThree(({
|
|
33
|
-
get
|
|
34
|
-
}) => get);
|
|
35
|
-
const performance = useThree(({
|
|
36
|
-
performance
|
|
37
|
-
}) => performance);
|
|
17
|
+
const invalidate = useThree(state => state.invalidate);
|
|
18
|
+
const defaultCamera = useThree(state => state.camera);
|
|
19
|
+
const gl = useThree(state => state.gl);
|
|
20
|
+
const events = useThree(state => state.events);
|
|
21
|
+
const set = useThree(state => state.set);
|
|
22
|
+
const get = useThree(state => state.get);
|
|
23
|
+
const performance = useThree(state => state.performance);
|
|
38
24
|
const explCamera = camera || defaultCamera;
|
|
39
|
-
const explDomElement = domElement ||
|
|
25
|
+
const explDomElement = domElement || events.connected || gl.domElement;
|
|
40
26
|
const controls = React.useMemo(() => new OrbitControls$1(explCamera), [explCamera]);
|
|
41
27
|
useFrame(() => {
|
|
42
28
|
if (controls.enabled) controls.update();
|
|
43
29
|
});
|
|
30
|
+
React.useEffect(() => {
|
|
31
|
+
controls.connect(explDomElement);
|
|
32
|
+
return () => void controls.dispose();
|
|
33
|
+
}, [explDomElement, regress, controls, invalidate]);
|
|
44
34
|
React.useEffect(() => {
|
|
45
35
|
const callback = e => {
|
|
46
36
|
invalidate();
|
|
@@ -48,17 +38,15 @@ const OrbitControls = /*#__PURE__*/React.forwardRef(({
|
|
|
48
38
|
if (onChange) onChange(e);
|
|
49
39
|
};
|
|
50
40
|
|
|
51
|
-
controls.connect(explDomElement);
|
|
52
41
|
controls.addEventListener('change', callback);
|
|
53
42
|
if (onStart) controls.addEventListener('start', onStart);
|
|
54
43
|
if (onEnd) controls.addEventListener('end', onEnd);
|
|
55
44
|
return () => {
|
|
56
|
-
controls.removeEventListener('change', callback);
|
|
57
45
|
if (onStart) controls.removeEventListener('start', onStart);
|
|
58
46
|
if (onEnd) controls.removeEventListener('end', onEnd);
|
|
59
|
-
controls.
|
|
47
|
+
controls.removeEventListener('change', callback);
|
|
60
48
|
};
|
|
61
|
-
}, [
|
|
49
|
+
}, [onChange, onStart, onEnd]);
|
|
62
50
|
React.useEffect(() => {
|
|
63
51
|
if (makeDefault) {
|
|
64
52
|
const old = get().controls;
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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"),t=require("three"),r=require("react");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(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 o=a(e),l=n(t),u=n(r);class c extends l.PointsMaterial{constructor(e){super(e),this.onBeforeCompile=e=>{e.fragmentShader=e.fragmentShader.replace("#include <output_fragment>","\n #include <output_fragment>\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float r = dot(cxy, cxy);\n float delta = fwidth(r); \n float mask = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n gl_FragColor = vec4(gl_FragColor.rgb, mask * gl_FragColor.a );\n ")}}}const i=u.forwardRef(((e,t)=>{const[r]=u.useState((()=>new c(null)));return u.createElement("primitive",o.default({},e,{object:r,ref:t,attach:"material"}))}));exports.PointMaterial=i,exports.PointMaterialImpl=c;
|
package/core/PointMaterial.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
3
|
+
import { PrimitiveProps } from '@react-three/fiber';
|
|
4
|
+
declare type PointMaterialType = JSX.IntrinsicElements['pointsMaterial'];
|
|
6
5
|
declare global {
|
|
7
6
|
namespace JSX {
|
|
8
7
|
interface IntrinsicElements {
|
|
@@ -10,10 +9,8 @@ declare global {
|
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
11
|
}
|
|
13
|
-
export declare class PointMaterialImpl extends THREE.
|
|
14
|
-
constructor();
|
|
15
|
-
get scale(): any;
|
|
16
|
-
set scale(v: any);
|
|
12
|
+
export declare class PointMaterialImpl extends THREE.PointsMaterial {
|
|
13
|
+
constructor(props: any);
|
|
17
14
|
}
|
|
18
|
-
export declare const PointMaterial: React.ForwardRefExoticComponent<React.RefAttributes<
|
|
15
|
+
export declare const PointMaterial: React.ForwardRefExoticComponent<Pick<Omit<PrimitiveProps, "object" | "attach">, string | number> & React.RefAttributes<PointMaterialImpl>>;
|
|
19
16
|
export {};
|
package/core/PointMaterial.js
CHANGED
|
@@ -2,48 +2,30 @@ 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(
|
|
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
|
-
}
|
|
5
|
+
class PointMaterialImpl extends THREE.PointsMaterial {
|
|
6
|
+
constructor(props) {
|
|
7
|
+
super(props);
|
|
34
8
|
|
|
35
|
-
|
|
36
|
-
|
|
9
|
+
this.onBeforeCompile = shader => {
|
|
10
|
+
shader.fragmentShader = shader.fragmentShader.replace('#include <output_fragment>', `
|
|
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
|
+
};
|
|
37
19
|
}
|
|
38
20
|
|
|
39
21
|
}
|
|
40
22
|
const PointMaterial = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
41
|
-
const [material] = React.useState(() => new PointMaterialImpl());
|
|
42
|
-
return /*#__PURE__*/React.createElement("primitive", _extends({
|
|
23
|
+
const [material] = React.useState(() => new PointMaterialImpl(null));
|
|
24
|
+
return /*#__PURE__*/React.createElement("primitive", _extends({}, props, {
|
|
43
25
|
object: material,
|
|
44
26
|
ref: ref,
|
|
45
27
|
attach: "material"
|
|
46
|
-
}
|
|
28
|
+
}));
|
|
47
29
|
});
|
|
48
30
|
|
|
49
31
|
export { PointMaterial, PointMaterialImpl };
|
|
@@ -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"),r=require("react"),n=require("three-stdlib");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)}var s=o(e),u=c(r);const a=u.forwardRef((({domElement:e,selector:r,onChange:o,onLock:c,onUnlock:a,enabled:i=!0,...f},d)=>{const{camera:l,...v}=f,m=t.useThree((({gl:e})=>e)),h=t.useThree((e=>e.camera)),E=t.useThree((e=>e.invalidate)),b=t.useThree((e=>e.raycaster)),k=t.useThree((e=>e.events)),p=l||h,L=e||k.connected||m.domElement,[g]=u.useState((()=>new n.PointerLockControls(p)));return u.useEffect((()=>{if(i){g.connect(L);const e=b.computeOffsets;return b.computeOffsets=e=>({offsetX:e.target.width/2,offsetY:e.target.height/2}),()=>{g.disconnect(),b.computeOffsets=e}}}),[i,g]),u.useEffect((()=>{const e=e=>{E(),o&&o(e)};g.addEventListener("change",e),c&&g.addEventListener("lock",c),a&&g.addEventListener("unlock",a);const t=()=>g.lock(),n=r?Array.from(document.querySelectorAll(r)):[document];return n.forEach((e=>e&&e.addEventListener("click",t))),()=>{g.removeEventListener("change",e),c&&g.addEventListener("lock",c),a&&g.addEventListener("unlock",a),n.forEach((e=>e?e.removeEventListener("click",t):void 0))}}),[o,c,a,r]),u.createElement("primitive",s.default({ref:d,object:g},v))}));exports.PointerLockControls=a;
|
|
@@ -3,10 +3,12 @@ import * as React from 'react';
|
|
|
3
3
|
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
|
+
domElement?: HTMLElement;
|
|
6
7
|
selector?: string;
|
|
8
|
+
enabled?: boolean;
|
|
7
9
|
camera?: THREE.Camera;
|
|
8
10
|
onChange?: (e?: THREE.Event) => void;
|
|
9
11
|
onLock?: (e?: THREE.Event) => void;
|
|
10
12
|
onUnlock?: (e?: THREE.Event) => void;
|
|
11
13
|
};
|
|
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>>;
|
|
14
|
+
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" | "enabled" | "connect" | "disconnect" | "domElement" | "minPolarAngle" | "maxPolarAngle" | "isLocked" | "getDirection" | "moveForward" | "moveRight" | "lock" | "unlock" | "selector" | "onLock" | "onUnlock"> & React.RefAttributes<PointerLockControlsImpl>>;
|
|
@@ -4,10 +4,12 @@ import * as React from 'react';
|
|
|
4
4
|
import { PointerLockControls as PointerLockControls$1 } from 'three-stdlib';
|
|
5
5
|
|
|
6
6
|
const PointerLockControls = /*#__PURE__*/React.forwardRef(({
|
|
7
|
+
domElement,
|
|
7
8
|
selector,
|
|
8
9
|
onChange,
|
|
9
10
|
onLock,
|
|
10
11
|
onUnlock,
|
|
12
|
+
enabled = true,
|
|
11
13
|
...props
|
|
12
14
|
}, ref) => {
|
|
13
15
|
const {
|
|
@@ -17,43 +19,55 @@ const PointerLockControls = /*#__PURE__*/React.forwardRef(({
|
|
|
17
19
|
const gl = useThree(({
|
|
18
20
|
gl
|
|
19
21
|
}) => gl);
|
|
20
|
-
const defaultCamera = useThree(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
invalidate
|
|
25
|
-
}) => invalidate);
|
|
22
|
+
const defaultCamera = useThree(state => state.camera);
|
|
23
|
+
const invalidate = useThree(state => state.invalidate);
|
|
24
|
+
const raycaster = useThree(state => state.raycaster);
|
|
25
|
+
const events = useThree(state => state.events);
|
|
26
26
|
const explCamera = camera || defaultCamera;
|
|
27
|
-
const
|
|
27
|
+
const explDomElement = domElement || events.connected || gl.domElement;
|
|
28
|
+
const [controls] = React.useState(() => new PointerLockControls$1(explCamera));
|
|
29
|
+
React.useEffect(() => {
|
|
30
|
+
if (enabled) {
|
|
31
|
+
controls.connect(explDomElement); // Force events to be centered while PLC is active
|
|
32
|
+
|
|
33
|
+
const oldComputeOffsets = raycaster.computeOffsets;
|
|
34
|
+
|
|
35
|
+
raycaster.computeOffsets = e => ({
|
|
36
|
+
offsetX: e.target.width / 2,
|
|
37
|
+
offsetY: e.target.height / 2
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
return () => {
|
|
41
|
+
controls.disconnect();
|
|
42
|
+
raycaster.computeOffsets = oldComputeOffsets;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}, [enabled, controls]);
|
|
28
46
|
React.useEffect(() => {
|
|
29
47
|
const callback = e => {
|
|
30
48
|
invalidate();
|
|
31
49
|
if (onChange) onChange(e);
|
|
32
50
|
};
|
|
33
51
|
|
|
34
|
-
controls
|
|
35
|
-
if (onLock) controls
|
|
36
|
-
if (onUnlock) controls
|
|
37
|
-
|
|
38
|
-
|
|
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();
|
|
52
|
+
controls.addEventListener('change', callback);
|
|
53
|
+
if (onLock) controls.addEventListener('lock', onLock);
|
|
54
|
+
if (onUnlock) controls.addEventListener('unlock', onUnlock); // Enforce previous interaction
|
|
55
|
+
|
|
56
|
+
const handler = () => controls.lock();
|
|
45
57
|
|
|
46
58
|
const elements = selector ? Array.from(document.querySelectorAll(selector)) : [document];
|
|
47
59
|
elements.forEach(element => element && element.addEventListener('click', handler));
|
|
48
60
|
return () => {
|
|
61
|
+
controls.removeEventListener('change', callback);
|
|
62
|
+
if (onLock) controls.addEventListener('lock', onLock);
|
|
63
|
+
if (onUnlock) controls.addEventListener('unlock', onUnlock);
|
|
49
64
|
elements.forEach(element => element ? element.removeEventListener('click', handler) : undefined);
|
|
50
65
|
};
|
|
51
|
-
}, [
|
|
52
|
-
return
|
|
66
|
+
}, [onChange, onLock, onUnlock, selector]);
|
|
67
|
+
return /*#__PURE__*/React.createElement("primitive", _extends({
|
|
53
68
|
ref: ref,
|
|
54
|
-
dispose: undefined,
|
|
55
69
|
object: controls
|
|
56
|
-
}, rest))
|
|
70
|
+
}, rest));
|
|
57
71
|
});
|
|
58
72
|
|
|
59
73
|
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,m;const b=l.createContext(null),
|
|
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),g=new c.Matrix4,y=new c.Vector3;new c.Color;const p=l.forwardRef((({children:e,range:t,limit:r=1e3,...n},u)=>{const o=l.useRef(null),[i,p]=l.useState([]),[[h,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(),g.copy(o.current.matrixWorld).invert(),d=0;d<i.length;d++)m=i[d].current,y.toArray(h,3*d),o.current.geometry.attributes.position.needsUpdate=!0,m.matrixWorldNeedsUpdate=!0,m.color.toArray(E,3*d),o.current.geometry.attributes.color.needsUpdate=!0,w.set([m.size],d),o.current.geometry.attributes.size.needsUpdate=!0}));const x=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]),U=l.useMemo((()=>({subscribe:e=>(p((t=>[...t,e])),()=>p((t=>t.filter((t=>t.current!==e.current)))))})),[]);return l.createElement("points",s.default({matrixAutoUpdate:!1,ref:f.default([u,o])},x,n),l.createElement("bufferGeometry",null,l.createElement("bufferAttribute",{attach:"attributes-position",count:h.length/3,array:h,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:U},e))})),h=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({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(p,s.default({},e,{ref:t}))));exports.Point=h,exports.Points=w,exports.PointsBuffer=E;
|
package/core/Points.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ declare type PointsInstancesProps = JSX.IntrinsicElements['points'] & {
|
|
|
5
5
|
limit?: number;
|
|
6
6
|
};
|
|
7
7
|
export declare const Point: React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
|
|
8
|
-
declare type PointsBuffersProps =
|
|
8
|
+
declare type PointsBuffersProps = JSX.IntrinsicElements['points'] & {
|
|
9
9
|
positions: Float32Array;
|
|
10
10
|
colors?: Float32Array;
|
|
11
11
|
sizes?: Float32Array;
|
|
12
12
|
stride?: 2 | 3;
|
|
13
13
|
};
|
|
14
|
-
export declare const PointsBuffer: React.ForwardRefExoticComponent<Pick<PointsBuffersProps, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "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 | "material" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "updateMorphTargets" | "colors" | "
|
|
15
|
-
export declare const Points: React.ForwardRefExoticComponent<Pick<PointsInstancesProps | PointsBuffersProps, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "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" | "onClick" | "onContextMenu" | "onDoubleClick" | "onPointerDown" | "onPointerMove" | "onPointerUp" | "onPointerCancel" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOut" | "onWheel" | "onPointerMissed" | "material" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "updateMorphTargets" | "isPoints"> & React.RefAttributes<THREE.Points<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>>;
|
|
14
|
+
export declare const PointsBuffer: React.ForwardRefExoticComponent<Pick<PointsBuffersProps, "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 | "material" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "updateMorphTargets" | "colors" | "stride" | "isPoints" | "positions" | "sizes"> & React.RefAttributes<THREE.Points<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>>;
|
|
15
|
+
export declare const Points: React.ForwardRefExoticComponent<Pick<PointsInstancesProps | PointsBuffersProps, "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" | "onClick" | "onContextMenu" | "onDoubleClick" | "onPointerDown" | "onPointerMove" | "onPointerUp" | "onPointerCancel" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOut" | "onWheel" | "onPointerMissed" | "material" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "updateMorphTargets" | "isPoints"> & React.RefAttributes<THREE.Points<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>>;
|
|
16
16
|
export {};
|
package/core/Points.js
CHANGED
|
@@ -9,7 +9,7 @@ let i, positionRef;
|
|
|
9
9
|
const context = /*#__PURE__*/React.createContext(null);
|
|
10
10
|
const parentMatrix = new THREE.Matrix4();
|
|
11
11
|
const position = new THREE.Vector3();
|
|
12
|
-
|
|
12
|
+
new THREE.Color();
|
|
13
13
|
/**
|
|
14
14
|
* Instance implementation, relies on react + context to update the attributes based on the children of this component
|
|
15
15
|
*/
|
|
@@ -41,23 +41,13 @@ const PointsInstances = /*#__PURE__*/React.forwardRef(({
|
|
|
41
41
|
|
|
42
42
|
for (i = 0; i < refs.length; i++) {
|
|
43
43
|
positionRef = refs[i].current;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (!positionRef.color.equals(color.fromArray(colors, i * 3))) {
|
|
53
|
-
positionRef.color.toArray(colors, i * 3);
|
|
54
|
-
parentRef.current.geometry.attributes.color.needsUpdate = true;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (positionRef.size !== sizes[i]) {
|
|
58
|
-
sizes.set([positionRef.size], i);
|
|
59
|
-
parentRef.current.geometry.attributes.size.needsUpdate = true;
|
|
60
|
-
}
|
|
44
|
+
position.toArray(positions, i * 3);
|
|
45
|
+
parentRef.current.geometry.attributes.position.needsUpdate = true;
|
|
46
|
+
positionRef.matrixWorldNeedsUpdate = true;
|
|
47
|
+
positionRef.color.toArray(colors, i * 3);
|
|
48
|
+
parentRef.current.geometry.attributes.color.needsUpdate = true;
|
|
49
|
+
sizes.set([positionRef.size], i);
|
|
50
|
+
parentRef.current.geometry.attributes.size.needsUpdate = true;
|
|
61
51
|
}
|
|
62
52
|
});
|
|
63
53
|
const events = React.useMemo(() => {
|
|
@@ -143,17 +133,10 @@ const PointsBuffer = /*#__PURE__*/React.forwardRef(({
|
|
|
143
133
|
useFrame(() => {
|
|
144
134
|
const attr = pointsRef.current.geometry.attributes;
|
|
145
135
|
attr.position.needsUpdate = true;
|
|
146
|
-
|
|
147
|
-
if (
|
|
148
|
-
attr.color.needsUpdate = true;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
if (sizes) {
|
|
152
|
-
attr.size.needsUpdate = true;
|
|
153
|
-
}
|
|
136
|
+
if (colors) attr.color.needsUpdate = true;
|
|
137
|
+
if (sizes) attr.size.needsUpdate = true;
|
|
154
138
|
});
|
|
155
139
|
return /*#__PURE__*/React.createElement("points", _extends({
|
|
156
|
-
matrixAutoUpdate: false,
|
|
157
140
|
ref: mergeRefs([forwardedRef, pointsRef])
|
|
158
141
|
}, props), /*#__PURE__*/React.createElement("bufferGeometry", null, /*#__PURE__*/React.createElement("bufferAttribute", {
|
|
159
142
|
attach: "attributes-position",
|
|
@@ -180,9 +163,7 @@ const Points = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
|
|
|
180
163
|
return /*#__PURE__*/React.createElement(PointsBuffer, _extends({}, props, {
|
|
181
164
|
ref: forwardedRef
|
|
182
165
|
}));
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return /*#__PURE__*/React.createElement(PointsInstances, _extends({}, props, {
|
|
166
|
+
} else return /*#__PURE__*/React.createElement(PointsInstances, _extends({}, props, {
|
|
186
167
|
ref: forwardedRef
|
|
187
168
|
}));
|
|
188
169
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { PositionalAudio as PositionalAudioImpl } from 'three';
|
|
3
|
-
export declare const PositionalAudio: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").
|
|
3
|
+
export declare const PositionalAudio: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<PositionalAudioImpl>, import("@react-three/fiber").NodeProps<PositionalAudioImpl, typeof PositionalAudioImpl>>>, 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;
|
package/core/Reflector.cjs.js
CHANGED
|
@@ -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"),o=require("../materials/BlurPass.cjs.js"),i=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({MeshReflectorMaterial:i.MeshReflectorMaterial});const p=d.forwardRef((({mixBlur:e=0,mixStrength:t=.5,resolution:n=256,blur:i=[0,0],args:s=[1,1],minDepthThreshold:l=.9,maxDepthThreshold:p=1,depthScale:m=0,depthToBlurRatioBias:h=.25,mirror:f=0,children:x,debug:M=0,distortion:b=1,mixContrast:w=1,distortionMap:g,...T},y)=>{d.useEffect((()=>{console.warn("Reflector has been deprecated and will be removed next major. Replace it with <MeshReflectorMaterial />!")}),[]);const
|
|
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"),o=require("../materials/BlurPass.cjs.js"),i=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({MeshReflectorMaterial:i.MeshReflectorMaterial});const p=d.forwardRef((({mixBlur:e=0,mixStrength:t=.5,resolution:n=256,blur:i=[0,0],args:s=[1,1],minDepthThreshold:l=.9,maxDepthThreshold:p=1,depthScale:m=0,depthToBlurRatioBias:h=.25,mirror:f=0,children:x,debug:M=0,distortion:b=1,mixContrast:w=1,distortionMap:g,...T},y)=>{d.useEffect((()=>{console.warn("Reflector has been deprecated and will be removed next major. Replace it with <MeshReflectorMaterial />!")}),[]);const S=a.useThree((({gl:e})=>e)),R=a.useThree((({camera:e})=>e)),j=a.useThree((({scene:e})=>e)),v=(i=Array.isArray(i)?i:[i,i])[0]+i[1]>0,B=d.useRef(null),[D]=d.useState((()=>new r.Plane)),[P]=d.useState((()=>new r.Vector3)),[E]=d.useState((()=>new r.Vector3)),[V]=d.useState((()=>new r.Vector3)),[W]=d.useState((()=>new r.Matrix4)),[F]=d.useState((()=>new r.Vector3(0,0,-1))),[O]=d.useState((()=>new r.Vector4)),[q]=d.useState((()=>new r.Vector3)),[U]=d.useState((()=>new r.Vector3)),[C]=d.useState((()=>new r.Vector4)),[_]=d.useState((()=>new r.Matrix4)),[L]=d.useState((()=>new r.PerspectiveCamera)),k=d.useCallback((()=>{if(E.setFromMatrixPosition(B.current.matrixWorld),V.setFromMatrixPosition(R.matrixWorld),W.extractRotation(B.current.matrixWorld),P.set(0,0,1),P.applyMatrix4(W),q.subVectors(E,V),q.dot(P)>0)return;q.reflect(P).negate(),q.add(E),W.extractRotation(R.matrixWorld),F.set(0,0,-1),F.applyMatrix4(W),F.add(V),U.subVectors(E,F),U.reflect(P).negate(),U.add(E),L.position.copy(q),L.up.set(0,1,0),L.up.applyMatrix4(W),L.up.reflect(P),L.lookAt(U),L.far=R.far,L.updateMatrixWorld(),L.projectionMatrix.copy(R.projectionMatrix),_.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),_.multiply(L.projectionMatrix),_.multiply(L.matrixWorldInverse),_.multiply(B.current.matrixWorld),D.setFromNormalAndCoplanarPoint(P,E),D.applyMatrix4(L.matrixWorldInverse),O.set(D.normal.x,D.normal.y,D.normal.z,D.constant);const e=L.projectionMatrix;C.x=(Math.sign(O.x)+e.elements[8])/e.elements[0],C.y=(Math.sign(O.y)+e.elements[9])/e.elements[5],C.z=-1,C.w=(1+e.elements[10])/e.elements[14],O.multiplyScalar(2/O.dot(C)),e.elements[2]=O.x,e.elements[6]=O.y,e.elements[10]=O.z+1,e.elements[14]=O.w}),[]),[z,A,I,G]=d.useMemo((()=>{const a={minFilter:r.LinearFilter,magFilter:r.LinearFilter,encoding:S.outputEncoding},s=new r.WebGLRenderTarget(n,n,a);s.depthBuffer=!0,s.depthTexture=new r.DepthTexture(n,n),s.depthTexture.format=r.DepthFormat,s.depthTexture.type=r.UnsignedShortType;const u=new r.WebGLRenderTarget(n,n,a);return[s,u,new o.BlurPass({gl:S,resolution:n,width:i[0],height:i[1],minDepthThreshold:l,maxDepthThreshold:p,depthScale:m,depthToBlurRatioBias:h}),{mirror:f,textureMatrix:_,mixBlur:e,tDiffuse:s.texture,tDepth:s.depthTexture,tDiffuseBlur:u.texture,hasBlur:v,mixStrength:t,minDepthThreshold:l,maxDepthThreshold:p,depthScale:m,depthToBlurRatioBias:h,transparent:!0,debug:M,distortion:b,distortionMap:g,mixContrast:w,"defines-USE_BLUR":v?"":void 0,"defines-USE_DEPTH":m>0?"":void 0,"defines-USE_DISTORTION":g?"":void 0}]}),[S,i,_,n,f,v,e,t,l,p,m,h,M,b,g,w]);return a.useFrame((()=>{if(null==B||!B.current)return;B.current.visible=!1;const e=S.xr.enabled,t=S.shadowMap.autoUpdate;k(),S.xr.enabled=!1,S.shadowMap.autoUpdate=!1,S.setRenderTarget(z),S.state.buffers.depth.setMask(!0),S.autoClear||S.clear(),S.render(j,L),v&&I.render(S,z,A),S.xr.enabled=e,S.shadowMap.autoUpdate=t,B.current.visible=!0,S.setRenderTarget(null)})),d.createElement("mesh",u.default({ref:c.default([B,y])},T),d.createElement("planeBufferGeometry",{args:s}),x?x("meshReflectorMaterial",G):d.createElement("meshReflectorMaterial",G))}));exports.Reflector=p;
|
package/core/Reflector.d.ts
CHANGED
|
@@ -26,4 +26,4 @@ declare global {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
export declare const Reflector: React.ForwardRefExoticComponent<Pick<ReflectorProps, "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 | "material" | "blur" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "resolution" | "minDepthThreshold" | "maxDepthThreshold" | "depthScale" | "depthToBlurRatioBias" | "mixBlur" | "mixStrength" | "mirror" | "
|
|
29
|
+
export declare const Reflector: React.ForwardRefExoticComponent<Pick<ReflectorProps, "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 | "material" | "blur" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "resolution" | "minDepthThreshold" | "maxDepthThreshold" | "depthScale" | "depthToBlurRatioBias" | "mixBlur" | "mixStrength" | "mirror" | "distortion" | "mixContrast" | "distortionMap" | "debug"> & React.RefAttributes<Mesh<import("three").BufferGeometry, import("three").Material | import("three").Material[]>>>;
|
package/core/Reflector.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Plane, Vector3, Matrix4, Vector4, PerspectiveCamera, LinearFilter,
|
|
3
|
+
import { Plane, Vector3, Matrix4, Vector4, PerspectiveCamera, LinearFilter, WebGLRenderTarget, DepthTexture, DepthFormat, UnsignedShortType } from 'three';
|
|
4
4
|
import { extend, useThree, useFrame } from '@react-three/fiber';
|
|
5
5
|
import mergeRefs from 'react-merge-refs';
|
|
6
6
|
import { BlurPass } from '../materials/BlurPass.js';
|
|
@@ -108,7 +108,6 @@ const Reflector = /*#__PURE__*/React.forwardRef(({
|
|
|
108
108
|
const parameters = {
|
|
109
109
|
minFilter: LinearFilter,
|
|
110
110
|
magFilter: LinearFilter,
|
|
111
|
-
format: RGBFormat,
|
|
112
111
|
encoding: gl.outputEncoding
|
|
113
112
|
};
|
|
114
113
|
const fbo1 = new WebGLRenderTarget(resolution, resolution, parameters);
|
package/core/RoundedBox.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");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 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 u=n(e),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");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 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 u=n(e),s=a(t);const c=1e-5;const o=s.forwardRef((function({args:[e=1,t=1,n=1]=[],radius:a=.05,steps:o=1,smoothness:f=4,children:i,...l},b){const d=s.useMemo((()=>function(e,t,n){const a=new r.Shape,u=n-c;return a.absarc(c,c,c,-Math.PI/2,-Math.PI,!0),a.absarc(c,t-2*u,c,Math.PI,Math.PI/2,!0),a.absarc(e-2*u,t-2*u,c,Math.PI/2,0,!0),a.absarc(e-2*u,c,c,0,-Math.PI/2,!0),a}(e,t,a)),[e,t,a]),h=s.useMemo((()=>({depth:n-2*a,bevelEnabled:!0,bevelSegments:2*f,steps:o,bevelSize:a-c,bevelThickness:a,curveSegments:f})),[n,a,f]),m=s.useRef();return s.useLayoutEffect((()=>{m.current&&m.current.center()}),[d,h]),s.createElement("mesh",u.default({ref:b},l),s.createElement("extrudeBufferGeometry",{attach:"geometry",ref:m,args:[d,h]}),i)}));exports.RoundedBox=o;
|
package/core/RoundedBox.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ declare type Props = {
|
|
|
5
5
|
args?: NamedArrayTuple<(width?: number, height?: number, depth?: number) => void>;
|
|
6
6
|
radius?: number;
|
|
7
7
|
smoothness?: number;
|
|
8
|
+
steps?: number;
|
|
8
9
|
} & Omit<JSX.IntrinsicElements['mesh'], 'args'>;
|
|
9
|
-
export declare const RoundedBox: React.ForwardRefExoticComponent<Pick<Props, "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 | "material" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "radius" | "smoothness"> & React.RefAttributes<Mesh<import("three").BufferGeometry, import("three").Material | import("three").Material[]>>>;
|
|
10
|
+
export declare const RoundedBox: React.ForwardRefExoticComponent<Pick<Props, "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 | "material" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "radius" | "steps" | "smoothness"> & React.RefAttributes<Mesh<import("three").BufferGeometry, import("three").Material | import("three").Material[]>>>;
|
|
10
11
|
export {};
|
package/core/RoundedBox.js
CHANGED
|
@@ -17,6 +17,7 @@ function createShape(width, height, radius0) {
|
|
|
17
17
|
const RoundedBox = /*#__PURE__*/React.forwardRef(function RoundedBox({
|
|
18
18
|
args: [width = 1, height = 1, depth = 1] = [],
|
|
19
19
|
radius = 0.05,
|
|
20
|
+
steps = 1,
|
|
20
21
|
smoothness = 4,
|
|
21
22
|
children,
|
|
22
23
|
...rest
|
|
@@ -26,7 +27,7 @@ const RoundedBox = /*#__PURE__*/React.forwardRef(function RoundedBox({
|
|
|
26
27
|
depth: depth - radius * 2,
|
|
27
28
|
bevelEnabled: true,
|
|
28
29
|
bevelSegments: smoothness * 2,
|
|
29
|
-
steps
|
|
30
|
+
steps,
|
|
30
31
|
bevelSize: radius - eps,
|
|
31
32
|
bevelThickness: radius,
|
|
32
33
|
curveSegments: smoothness
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three-stdlib"),n=require("three");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(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=u(e),l=c(r);exports.Sampler=({children:e,weight:r,transform:u,instances:c,mesh:o,...a})=>{const s=l.useRef(null),d=l.useRef(null),f=l.useRef(null);return l.useEffect((()=>{var e,r;d.current=null!==(e=null==c?void 0:c.current)&&void 0!==e?e:s.current.children.find((e=>e.hasOwnProperty("instanceMatrix"))),f.current=null!==(r=null==o?void 0:o.current)&&void 0!==r?r:s.current.children.find((e=>"Mesh"===e.type))}),[e,null==o?void 0:o.current,null==c?void 0:c.current]),l.useEffect((()=>{if(void 0===f.current)return;if(void 0===d.current)return;const e=new t.MeshSurfaceSampler(f.current);r&&e.setWeightAttribute(r),e.build();const c=new n.Vector3,i=new n.Vector3,l=new n.Color,o=new n.Object3D;f.current.updateMatrixWorld(!0);for(let r=0;r<d.current.count;r++)e.sample(c,i,l),"function"==typeof u?u({dummy:o,sampledMesh:f.current,position:c,normal:i,color:l},r):o.position.copy(c),o.updateMatrix(),d.current.setMatrixAt(r,o.matrix);d.current.instanceMatrix.needsUpdate=!0}),[e,null==o?void 0:o.current,null==c?void 0:c.current]),l.createElement("group",i.default({ref:s},a),e)};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Color, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';
|
|
3
|
+
import { GroupProps } from '@react-three/fiber';
|
|
4
|
+
declare type SamplePayload = {
|
|
5
|
+
position: Vector3;
|
|
6
|
+
normal: Vector3;
|
|
7
|
+
color: Color;
|
|
8
|
+
};
|
|
9
|
+
export declare type TransformFn = (payload: TransformPayload, i: number) => void;
|
|
10
|
+
declare type TransformPayload = SamplePayload & {
|
|
11
|
+
dummy: Object3D;
|
|
12
|
+
sampledMesh: Mesh;
|
|
13
|
+
};
|
|
14
|
+
declare type Props = {
|
|
15
|
+
mesh?: React.RefObject<Mesh>;
|
|
16
|
+
instances?: React.RefObject<InstancedMesh>;
|
|
17
|
+
weight?: string;
|
|
18
|
+
transform?: TransformFn;
|
|
19
|
+
};
|
|
20
|
+
export declare const Sampler: ({ children, weight, transform, instances, mesh, ...props }: React.PropsWithChildren<Props & GroupProps>) => JSX.Element;
|
|
21
|
+
export {};
|