@react-three/drei 9.0.0-beta.1 → 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 +168 -22
- package/core/ArcballControls.cjs.js +1 -1
- package/core/ArcballControls.d.ts +8 -8
- package/core/ArcballControls.js +6 -5
- package/core/Cloud.cjs.js +1 -1
- package/core/Cloud.d.ts +2 -1
- package/core/Cloud.js +3 -2
- package/core/ContactShadows.cjs.js +1 -1
- package/core/ContactShadows.d.ts +2 -1
- package/core/ContactShadows.js +18 -11
- package/core/CubeCamera.cjs.js +1 -1
- package/core/CubeCamera.js +1 -2
- package/core/CurveModifier.cjs.js +1 -1
- package/core/CurveModifier.js +18 -22
- package/core/Detailed.d.ts +1 -1
- package/core/Effects.d.ts +1 -1
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.js +8 -27
- package/core/FirstPersonControls.d.ts +1 -1
- 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.d.ts +1 -1
- package/core/Instances.d.ts +1 -1
- 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 +4 -3
- 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 +5 -4
- package/core/OrthographicCamera.d.ts +1 -1
- package/core/PerspectiveCamera.d.ts +1 -1
- package/core/PositionalAudio.d.ts +1 -1
- package/core/Reflector.cjs.js +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/Shadow.d.ts +1 -1
- package/core/SpotLight.d.ts +19 -3
- package/core/Stage.cjs.js +1 -1
- package/core/Stage.d.ts +1 -1
- package/core/Stats.cjs.js +1 -1
- package/core/Stats.js +1 -1
- package/core/Text.cjs.js +1 -1
- package/core/Text.d.ts +1 -1
- package/core/Text.js +8 -1
- package/core/TransformControls.cjs.js +1 -1
- package/core/TransformControls.d.ts +1 -1
- package/core/TransformControls.js +9 -1
- package/core/index.cjs.js +1 -1
- package/core/index.js +2 -2
- package/core/shaderMaterial.d.ts +1 -1
- package/core/useDetectGPU.cjs.js +1 -1
- package/core/useDetectGPU.js +2 -2
- package/core/useGLTF.d.ts +1 -1
- package/core/useHelper.cjs.js +1 -1
- package/core/useHelper.d.ts +2 -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/materials/MeshReflectorMaterial.cjs.js +1 -1
- package/materials/MeshReflectorMaterial.js +4 -5
- package/native/index.cjs.js +1 -1
- package/native/index.js +2 -2
- package/package.json +6 -6
- 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 +2 -2
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,
|
|
@@ -37,11 +38,11 @@ const OrbitControls = /*#__PURE__*/React.forwardRef(({
|
|
|
37
38
|
}) => performance);
|
|
38
39
|
const explCamera = camera || defaultCamera;
|
|
39
40
|
const explDomElement = domElement || (typeof events.connected !== 'boolean' ? events.connected : gl.domElement);
|
|
40
|
-
const controls =
|
|
41
|
+
const controls = useMemo(() => new OrbitControls$1(explCamera), [explCamera]);
|
|
41
42
|
useFrame(() => {
|
|
42
43
|
if (controls.enabled) controls.update();
|
|
43
44
|
});
|
|
44
|
-
|
|
45
|
+
useEffect(() => {
|
|
45
46
|
const callback = e => {
|
|
46
47
|
invalidate();
|
|
47
48
|
if (regress) performance.regress();
|
|
@@ -59,7 +60,7 @@ const OrbitControls = /*#__PURE__*/React.forwardRef(({
|
|
|
59
60
|
controls.dispose();
|
|
60
61
|
};
|
|
61
62
|
}, [explDomElement, onChange, onStart, onEnd, regress, controls, invalidate]);
|
|
62
|
-
|
|
63
|
+
useEffect(() => {
|
|
63
64
|
if (makeDefault) {
|
|
64
65
|
const old = get().controls;
|
|
65
66
|
set({
|
|
@@ -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,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.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
|
package/core/Shadow.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Mesh, Color } from 'three';
|
|
3
|
-
export declare const Shadow: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").
|
|
3
|
+
export declare const Shadow: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<Mesh<import("three").BufferGeometry, import("three").Material | import("three").Material[]>>, import("@react-three/fiber").NodeProps<Mesh<import("three").BufferGeometry, import("three").Material | import("three").Material[]>, typeof Mesh>>>, 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/SpotLight.d.ts
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DepthTexture, SpotLight as SpotLightImpl } from 'three';
|
|
3
|
-
declare const SpotLight: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
declare const SpotLight: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<SpotLightImpl>, import("@react-three/fiber").NodeProps<SpotLightImpl, typeof SpotLightImpl>>>, import("@react-three/fiber").NonFunctionKeys<{
|
|
4
|
+
position?: import("@react-three/fiber").Vector3 | undefined;
|
|
5
|
+
up?: import("@react-three/fiber").Vector3 | undefined;
|
|
6
|
+
scale?: import("@react-three/fiber").Vector3 | undefined;
|
|
7
|
+
rotation?: import("@react-three/fiber").Euler | undefined;
|
|
8
|
+
matrix?: import("@react-three/fiber").Matrix4 | undefined;
|
|
9
|
+
quaternion?: import("@react-three/fiber").Quaternion | undefined;
|
|
10
|
+
layers?: import("@react-three/fiber").Layers | undefined;
|
|
11
|
+
dispose?: (() => void) | null | undefined;
|
|
12
|
+
}>> & {
|
|
13
|
+
position?: import("@react-three/fiber").Vector3 | undefined;
|
|
14
|
+
up?: import("@react-three/fiber").Vector3 | undefined;
|
|
15
|
+
scale?: import("@react-three/fiber").Vector3 | undefined;
|
|
16
|
+
rotation?: import("@react-three/fiber").Euler | undefined;
|
|
17
|
+
matrix?: import("@react-three/fiber").Matrix4 | undefined;
|
|
18
|
+
quaternion?: import("@react-three/fiber").Quaternion | undefined;
|
|
19
|
+
layers?: import("@react-three/fiber").Layers | undefined;
|
|
20
|
+
dispose?: (() => void) | null | undefined;
|
|
21
|
+
} & import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers & {
|
|
6
22
|
depthBuffer?: DepthTexture | undefined;
|
|
7
23
|
attenuation?: number | undefined;
|
|
8
24
|
anglePower?: number | undefined;
|
package/core/Stage.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"),n=require("@react-three/fiber"),i=require("./Environment.cjs.js"),a=require("./ContactShadows.cjs.js");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("@react-three/fiber"),i=require("./Environment.cjs.js"),a=require("./ContactShadows.cjs.js");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)}require("three-stdlib"),require("../helpers/environment-assets.cjs.js");var u=o(e),c=s(t),l=s(r);const f={rembrandt:{main:[1,2,1],fill:[-2,-.5,-2]},portrait:{main:[-1,2,.5],fill:[-1,.5,-1.5]},upfront:{main:[0,2,1],fill:[-1,.5,-1.5]},soft:{main:[-2,4,4],fill:[-1,.5,-1.5]}};exports.Stage=function({children:e,controls:t,shadows:r=!0,adjustCamera:o=!0,environment:s="city",intensity:d=1,preset:h="rembrandt",shadowBias:m=0,contactShadow:p={blur:2,opacity:.5,position:[0,0,0]},...b}){const g=f[h],y=n.useThree((e=>e.camera)),j=n.useThree((e=>e.controls)),w=c.useRef(null),E=c.useRef(null),[{radius:x,width:v,height:q},O]=c.useState({radius:0,width:0,height:0});return c.useLayoutEffect((()=>{w.current.position.set(0,0,0),w.current.updateWorldMatrix(!0,!0);const e=(new l.Box3).setFromObject(E.current),t=new l.Vector3,r=new l.Sphere,n=e.max.y-e.min.y,i=e.max.x-e.min.x;e.getCenter(t),e.getBoundingSphere(r),O({radius:r.radius,width:i,height:n}),w.current.position.set(-t.x,-t.y+n/2,-t.z)}),[e]),c.useLayoutEffect((()=>{if(o){const e=x/(q>v?1.5:2.5);y.position.set(0,.5*x,2.5*x),y.near=.1,y.far=Math.max(5e3,4*x),y.lookAt(0,e,0);const r=j||(null==t?void 0:t.current);r&&(r.target.set(0,e,0),r.update())}}),[j,x,q,v,o]),c.createElement("group",b,c.createElement("group",{ref:w},c.createElement("group",{ref:E},e)),p&&c.createElement(a.ContactShadows,u.default({width:2*x,height:2*x,far:x/2},p)),s&&c.createElement(i.Environment,{preset:s}),c.createElement("ambientLight",{intensity:d/3}),c.createElement("spotLight",{penumbra:1,position:[g.main[0]*x,g.main[1]*x,g.main[2]*x],intensity:2*d,castShadow:r,"shadow-bias":m}),c.createElement("pointLight",{position:[g.fill[0]*x,g.fill[1]*x,g.fill[2]*x],intensity:d}))};
|
package/core/Stage.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ declare type ControlsProto = {
|
|
|
26
26
|
declare type Props = JSX.IntrinsicElements['group'] & {
|
|
27
27
|
shadows?: boolean;
|
|
28
28
|
adjustCamera?: boolean;
|
|
29
|
-
environment?: PresetsType;
|
|
29
|
+
environment?: PresetsType | null;
|
|
30
30
|
intensity?: number;
|
|
31
31
|
ambience?: number;
|
|
32
32
|
controls?: React.MutableRefObject<ControlsProto>;
|
package/core/Stats.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-three/fiber"),r=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-three/fiber"),r=require("stats.js"),n=require("../helpers/useEffectfulState.cjs.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function f(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=f(e),a=u(r);exports.Stats=function({showPanel:e=0,className:r,parent:u}){const f=n.useEffectfulState((()=>new a.default),[]);return c.useEffect((()=>{if(f){const n=u&&u.current||document.body;f.showPanel(e),null==n||n.appendChild(f.dom),r&&f.dom.classList.add(r);const c=t.addEffect((()=>f.begin())),a=t.addAfterEffect((()=>f.end()));return()=>{null==n||n.removeChild(f.dom),c(),a()}}}),[u,f,r,e]),null};
|
package/core/Stats.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { addEffect, addAfterEffect } from '@react-three/fiber';
|
|
3
|
-
import StatsImpl from '
|
|
3
|
+
import StatsImpl from 'stats.js';
|
|
4
4
|
import { useEffectfulState } from '../helpers/useEffectfulState.js';
|
|
5
5
|
|
|
6
6
|
function Stats({
|
package/core/Text.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("troika-three-text"),n=require("@react-three/fiber");function u(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
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("troika-three-text"),n=require("@react-three/fiber"),o=require("suspend-react");function u(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 a=u(e),i=c(t);const f=i.forwardRef((({anchorX:e="center",anchorY:t="middle",font:u,children:c,onSync:f,...s},d)=>{const l=n.useThree((({invalidate:e})=>e)),[p]=i.useState((()=>new r.Text)),[h,b]=i.useMemo((()=>{const e=[];let t="";return i.Children.forEach(c,(r=>{"string"==typeof r||"number"==typeof r?t+=r:e.push(r)})),[e,t]}),[c]);return o.suspend((()=>new Promise((e=>r.preloadFont({font:u,characters:b},e)))),["troika-text",u,b]),i.useLayoutEffect((()=>{p.sync((()=>{l(),f&&f(p)}))})),i.useEffect((()=>()=>p.dispose()),[p]),i.createElement("primitive",a.default({object:p,ref:d,font:u,text:b,anchorX:e,anchorY:t},s),h)}));exports.Text=f;
|
package/core/Text.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ReactThreeFiber } from '@react-three/fiber';
|
|
3
|
-
export declare const Text: React.ForwardRefExoticComponent<Pick<Omit<ReactThreeFiber.
|
|
3
|
+
export declare const Text: React.ForwardRefExoticComponent<Pick<Omit<ReactThreeFiber.ExtendedColors<ReactThreeFiber.Overwrite<Partial<import("three").Mesh<import("three").BufferGeometry, import("three").Material | import("three").Material[]>>, ReactThreeFiber.NodeProps<import("three").Mesh<import("three").BufferGeometry, import("three").Material | import("three").Material[]>, typeof import("three").Mesh>>>, ReactThreeFiber.NonFunctionKeys<{
|
|
4
4
|
position?: ReactThreeFiber.Vector3 | undefined;
|
|
5
5
|
up?: ReactThreeFiber.Vector3 | undefined;
|
|
6
6
|
scale?: ReactThreeFiber.Vector3 | undefined;
|
package/core/Text.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Text as Text$1 } from 'troika-three-text';
|
|
3
|
+
import { Text as Text$1, preloadFont } from 'troika-three-text';
|
|
4
4
|
import { useThree } from '@react-three/fiber';
|
|
5
|
+
import { suspend } from 'suspend-react';
|
|
5
6
|
|
|
6
7
|
// eslint-disable-next-line prettier/prettier
|
|
7
8
|
const Text = /*#__PURE__*/React.forwardRef(({
|
|
8
9
|
anchorX = 'center',
|
|
9
10
|
anchorY = 'middle',
|
|
11
|
+
font,
|
|
10
12
|
children,
|
|
11
13
|
onSync,
|
|
12
14
|
...props
|
|
@@ -27,6 +29,10 @@ const Text = /*#__PURE__*/React.forwardRef(({
|
|
|
27
29
|
});
|
|
28
30
|
return [n, t];
|
|
29
31
|
}, [children]);
|
|
32
|
+
suspend(() => new Promise(res => preloadFont({
|
|
33
|
+
font,
|
|
34
|
+
characters: text
|
|
35
|
+
}, res)), ['troika-text', font, text]);
|
|
30
36
|
React.useLayoutEffect(() => void troikaMesh.sync(() => {
|
|
31
37
|
invalidate();
|
|
32
38
|
if (onSync) onSync(troikaMesh);
|
|
@@ -37,6 +43,7 @@ const Text = /*#__PURE__*/React.forwardRef(({
|
|
|
37
43
|
return /*#__PURE__*/React.createElement("primitive", _extends({
|
|
38
44
|
object: troikaMesh,
|
|
39
45
|
ref: ref,
|
|
46
|
+
font: font,
|
|
40
47
|
text: text,
|
|
41
48
|
anchorX: anchorX,
|
|
42
49
|
anchorY: anchorY
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("@react-three/fiber"),t=require("lodash.omit"),r=require("lodash.pick"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("@react-three/fiber"),t=require("lodash.omit"),r=require("lodash.pick"),o=require("react"),a=require("three"),l=require("three-stdlib");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var i=u(e),c=u(t),d=u(r),f=s(o),v=s(a);const m=f.forwardRef((({children:e,domElement:t,onChange:r,onMouseDown:o,onMouseUp:a,onObjectChange:u,object:s,...m},E)=>{const h=["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"],{camera:b,...g}=m,p=d.default(g,h),L=c.default(g,h),j=n.useThree((e=>e.controls)),O=n.useThree((({gl:e})=>e)),w=n.useThree((({camera:e})=>e)),q=n.useThree((({invalidate:e})=>e)),y=b||w,C=f.useMemo((()=>new l.TransformControls(y,t||O.domElement)),[y,t,O.domElement]),D=f.useRef();return f.useLayoutEffect((()=>(s?C.attach(s instanceof v.Object3D?s:s.current):D.current instanceof v.Object3D&&C.attach(D.current),()=>{C.detach()})),[s,e,C]),f.useEffect((()=>{if(j){const e=e=>j.enabled=!e.value;return C.addEventListener("dragging-changed",e),()=>C.removeEventListener("dragging-changed",e)}}),[C,j]),f.useEffect((()=>{const e=e=>{q(),r&&r(e)};return null==C||null==C.addEventListener||C.addEventListener("change",e),o&&(null==C||null==C.addEventListener||C.addEventListener("mouseDown",o)),a&&(null==C||null==C.addEventListener||C.addEventListener("mouseUp",a)),u&&(null==C||null==C.addEventListener||C.addEventListener("objectChange",u)),()=>{null==C||null==C.removeEventListener||C.removeEventListener("change",e),o&&(null==C||null==C.removeEventListener||C.removeEventListener("mouseDown",o)),a&&(null==C||null==C.removeEventListener||C.removeEventListener("mouseUp",a)),u&&(null==C||null==C.removeEventListener||C.removeEventListener("objectChange",u))}}),[r,o,a,u,C,q]),C?f.createElement(f.Fragment,null,f.createElement("primitive",i.default({ref:E,dispose:void 0,object:C},p)),f.createElement("group",i.default({ref:D},L),e)):null}));exports.TransformControls=m;
|
|
@@ -23,4 +23,4 @@ export declare type TransformControlsProps = ReactThreeFiber.Object3DNode<Transf
|
|
|
23
23
|
onMouseUp?: (e?: THREE.Event) => void;
|
|
24
24
|
onObjectChange?: (e?: THREE.Event) => void;
|
|
25
25
|
};
|
|
26
|
-
export declare const TransformControls: React.ForwardRefExoticComponent<Pick<TransformControlsProps, "object" | "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "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" | "onChange" | "onMouseDown" | "onMouseUp" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "size" | "space" | "enabled" | "update" | "axis" | "setSize" | "domElement" | "isTransformControls" | "detach" | "getMode" | "setMode" | "setTranslationSnap" | "setRotationSnap" | "setScaleSnap" | "setSpace" | "onObjectChange" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "showX" | "showY" | "showZ"> & React.RefAttributes<TransformControlsImpl<THREE.Camera>>>;
|
|
26
|
+
export declare const TransformControls: React.ForwardRefExoticComponent<Pick<TransformControlsProps, "object" | "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "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" | "onChange" | "onMouseDown" | "onMouseUp" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "size" | "space" | "enabled" | "update" | "axis" | "connect" | "setSize" | "domElement" | "isTransformControls" | "detach" | "getMode" | "setMode" | "setTranslationSnap" | "setRotationSnap" | "setScaleSnap" | "setSpace" | "onObjectChange" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "showX" | "showY" | "showZ"> & React.RefAttributes<TransformControlsImpl<THREE.Camera>>>;
|
|
@@ -38,7 +38,15 @@ const TransformControls = /*#__PURE__*/React.forwardRef(({
|
|
|
38
38
|
const controls = React.useMemo(() => new TransformControls$1(explCamera, domElement || gl.domElement), [explCamera, domElement, gl.domElement]);
|
|
39
39
|
const group = React.useRef();
|
|
40
40
|
React.useLayoutEffect(() => {
|
|
41
|
-
if (object)
|
|
41
|
+
if (object) {
|
|
42
|
+
controls.attach(object instanceof THREE.Object3D ? object : object.current);
|
|
43
|
+
} else if (group.current instanceof THREE.Object3D) {
|
|
44
|
+
controls.attach(group.current);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return () => {
|
|
48
|
+
controls.detach();
|
|
49
|
+
};
|
|
42
50
|
}, [object, children, controls]);
|
|
43
51
|
React.useEffect(() => {
|
|
44
52
|
if (defaultControls) {
|
package/core/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./Line.cjs.js"),o=require("./PositionalAudio.cjs.js"),i=require("./Text.cjs.js"),u=require("./Effects.cjs.js"),a=require("./GradientTexture.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./Line.cjs.js"),o=require("./PositionalAudio.cjs.js"),i=require("./Text.cjs.js"),u=require("./Effects.cjs.js"),a=require("./GradientTexture.cjs.js"),c=require("./Image.cjs.js"),j=require("./Edges.cjs.js"),n=require("./OrthographicCamera.cjs.js"),p=require("./PerspectiveCamera.cjs.js"),l=require("./CubeCamera.cjs.js"),x=require("./DeviceOrientationControls.cjs.js"),q=require("./FlyControls.cjs.js"),d=require("./MapControls.cjs.js"),C=require("./OrbitControls.cjs.js"),h=require("./TrackballControls.cjs.js"),m=require("./ArcballControls.cjs.js"),B=require("./TransformControls.cjs.js"),b=require("./PointerLockControls.cjs.js"),M=require("./FirstPersonControls.cjs.js"),P=require("./GizmoHelper.cjs.js"),S=require("./GizmoViewcube.cjs.js"),f=require("./GizmoViewport.cjs.js"),T=require("./useCubeTexture.cjs.js"),g=require("./useFBX.cjs.js"),v=require("./useGLTF.cjs.js"),L=require("./useProgress.cjs.js"),A=require("./useTexture.cjs.js"),G=require("./useKTX2.cjs.js"),k=require("./Stats.cjs.js"),D=require("./useDepthBuffer.cjs.js"),F=require("./useAspect.cjs.js"),w=require("./useCamera.cjs.js"),z=require("./useDetectGPU.cjs.js"),I=require("./useHelper.cjs.js"),O=require("./useBVH.cjs.js"),E=require("./useContextBridge.cjs.js"),R=require("./useAnimations.cjs.js"),y=require("./useFBO.cjs.js"),H=require("./useIntersect.cjs.js"),V=require("./CurveModifier.cjs.js"),Q=require("./MeshDistortMaterial.cjs.js"),X=require("./MeshWobbleMaterial.cjs.js"),K=require("./MeshReflectorMaterial.cjs.js"),W=require("./PointMaterial.cjs.js"),N=require("./shaderMaterial.cjs.js"),U=require("./softShadows.cjs.js"),_=require("./shapes.cjs.js"),J=require("./RoundedBox.cjs.js"),Y=require("./ScreenQuad.cjs.js"),Z=require("./Center.cjs.js"),$=require("./Bounds.cjs.js"),ee=require("./CameraShake.cjs.js"),re=require("./Float.cjs.js"),se=require("./Stage.cjs.js"),te=require("./Backdrop.cjs.js"),oe=require("./Shadow.cjs.js"),ie=require("./ContactShadows.cjs.js"),ue=require("./Reflector.cjs.js"),ae=require("./SpotLight.cjs.js"),ce=require("./Environment.cjs.js"),je=require("./Sky.cjs.js"),ne=require("./Stars.cjs.js"),pe=require("./Cloud.cjs.js"),le=require("./useMatcapTexture.cjs.js"),xe=require("./useNormalTexture.cjs.js"),qe=require("./Points.cjs.js"),de=require("./Instances.cjs.js"),Ce=require("./Segments.cjs.js"),he=require("./Detailed.cjs.js"),me=require("./Preload.cjs.js"),Be=require("./BakeShadows.cjs.js"),be=require("./meshBounds.cjs.js"),Me=require("./AdaptiveDpr.cjs.js"),Pe=require("./AdaptiveEvents.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("lodash.omit"),require("lodash.pick"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.Line=t.Line,exports.PositionalAudio=o.PositionalAudio,exports.Text=i.Text,exports.Effects=u.Effects,exports.isWebGL2Available=u.isWebGL2Available,exports.GradientTexture=a.GradientTexture,exports.Image=c.Image,exports.Edges=j.Edges,exports.OrthographicCamera=n.OrthographicCamera,exports.PerspectiveCamera=p.PerspectiveCamera,exports.CubeCamera=l.CubeCamera,exports.DeviceOrientationControls=x.DeviceOrientationControls,exports.FlyControls=q.FlyControls,exports.MapControls=d.MapControls,exports.OrbitControls=C.OrbitControls,exports.TrackballControls=h.TrackballControls,exports.ArcballControls=m.ArcballControls,exports.TransformControls=B.TransformControls,exports.PointerLockControls=b.PointerLockControls,exports.FirstPersonControls=M.FirstPersonControls,exports.GizmoHelper=P.GizmoHelper,exports.useGizmoContext=P.useGizmoContext,exports.GizmoViewcube=S.GizmoViewcube,exports.GizmoViewport=f.GizmoViewport,exports.useCubeTexture=T.useCubeTexture,exports.useFBX=g.useFBX,exports.useGLTF=v.useGLTF,exports.useProgress=L.useProgress,exports.IsObject=A.IsObject,exports.useTexture=A.useTexture,exports.useKTX2=G.useKTX2,exports.Stats=k.Stats,exports.useDepthBuffer=D.useDepthBuffer,exports.useAspect=F.useAspect,exports.useCamera=w.useCamera,exports.useDetectGPU=z.useDetectGPU,exports.useHelper=I.useHelper,exports.useBVH=O.useBVH,exports.useContextBridge=E.useContextBridge,exports.useAnimations=R.useAnimations,exports.useFBO=y.useFBO,exports.useIntersect=H.useIntersect,exports.CurveModifier=V.CurveModifier,exports.MeshDistortMaterial=Q.MeshDistortMaterial,exports.MeshWobbleMaterial=X.MeshWobbleMaterial,exports.MeshReflectorMaterial=K.MeshReflectorMaterial,exports.PointMaterial=W.PointMaterial,exports.PointMaterialImpl=W.PointMaterialImpl,exports.shaderMaterial=N.shaderMaterial,exports.softShadows=U.softShadows,exports.Box=_.Box,exports.Circle=_.Circle,exports.Cone=_.Cone,exports.Cylinder=_.Cylinder,exports.Dodecahedron=_.Dodecahedron,exports.Extrude=_.Extrude,exports.Icosahedron=_.Icosahedron,exports.Lathe=_.Lathe,exports.Octahedron=_.Octahedron,exports.Plane=_.Plane,exports.Polyhedron=_.Polyhedron,exports.Ring=_.Ring,exports.Sphere=_.Sphere,exports.Tetrahedron=_.Tetrahedron,exports.Torus=_.Torus,exports.TorusKnot=_.TorusKnot,exports.Tube=_.Tube,exports.RoundedBox=J.RoundedBox,exports.ScreenQuad=Y.ScreenQuad,exports.Center=Z.Center,exports.Bounds=$.Bounds,exports.useBounds=$.useBounds,exports.CameraShake=ee.CameraShake,exports.Float=re.Float,exports.Stage=se.Stage,exports.Backdrop=te.Backdrop,exports.Shadow=oe.Shadow,exports.ContactShadows=ie.ContactShadows,exports.Reflector=ue.Reflector,exports.SpotLight=ae.SpotLight,exports.Environment=ce.Environment,exports.Sky=je.Sky,exports.calcPosFromAngles=je.calcPosFromAngles,exports.Stars=ne.Stars,exports.Cloud=pe.Cloud,exports.useMatcapTexture=le.useMatcapTexture,exports.useNormalTexture=xe.useNormalTexture,exports.Point=qe.Point,exports.Points=qe.Points,exports.PointsBuffer=qe.PointsBuffer,exports.Instance=de.Instance,exports.Instances=de.Instances,exports.Merged=de.Merged,exports.Segment=Ce.Segment,exports.Segments=Ce.Segments,exports.Detailed=he.Detailed,exports.Preload=me.Preload,exports.BakeShadows=Be.BakeShadows,exports.meshBounds=be.meshBounds,exports.AdaptiveDpr=Me.AdaptiveDpr,exports.AdaptiveEvents=Pe.AdaptiveEvents;
|
package/core/index.js
CHANGED
|
@@ -82,13 +82,13 @@ import 'react-merge-refs';
|
|
|
82
82
|
import 'three';
|
|
83
83
|
import 'three-stdlib';
|
|
84
84
|
import 'troika-three-text';
|
|
85
|
+
import 'suspend-react';
|
|
85
86
|
import 'lodash.omit';
|
|
86
87
|
import 'lodash.pick';
|
|
87
88
|
import 'zustand';
|
|
88
|
-
import '
|
|
89
|
+
import 'stats.js';
|
|
89
90
|
import '../helpers/useEffectfulState.js';
|
|
90
91
|
import 'detect-gpu';
|
|
91
|
-
import 'use-asset';
|
|
92
92
|
import 'three-mesh-bvh';
|
|
93
93
|
import '../materials/BlurPass.js';
|
|
94
94
|
import '../materials/ConvolutionMaterial.js';
|
package/core/shaderMaterial.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export declare function shaderMaterial(uniforms: {
|
|
|
34
34
|
toJSON(meta: any): any;
|
|
35
35
|
alphaTest: number;
|
|
36
36
|
alphaToCoverage: boolean;
|
|
37
|
+
alphaWrite: boolean;
|
|
37
38
|
blendDst: THREE.BlendingDstFactor;
|
|
38
39
|
blendDstAlpha: number | null;
|
|
39
40
|
blendEquation: THREE.BlendingEquation;
|
|
@@ -48,7 +49,6 @@ export declare function shaderMaterial(uniforms: {
|
|
|
48
49
|
depthFunc: THREE.DepthModes;
|
|
49
50
|
depthTest: boolean;
|
|
50
51
|
depthWrite: boolean;
|
|
51
|
-
format: THREE.PixelFormat;
|
|
52
52
|
id: number;
|
|
53
53
|
stencilWrite: boolean;
|
|
54
54
|
stencilFunc: THREE.StencilFunc;
|
package/core/useDetectGPU.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("detect-gpu"),t=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("detect-gpu"),t=require("suspend-react");exports.useDetectGPU=r=>t.suspend((()=>e.getGPUTier(r)),["useDetectGPU"]);
|
package/core/useDetectGPU.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getGPUTier } from 'detect-gpu';
|
|
2
|
-
import {
|
|
2
|
+
import { suspend } from 'suspend-react';
|
|
3
3
|
|
|
4
|
-
const useDetectGPU = props =>
|
|
4
|
+
const useDetectGPU = props => suspend(() => getGPUTier(props), ['useDetectGPU']);
|
|
5
5
|
|
|
6
6
|
export { useDetectGPU };
|
package/core/useGLTF.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GLTFLoader } from 'three-stdlib';
|
|
2
|
-
export declare function useGLTF<T extends string | string[]>(path: T, useDraco?: boolean | string, useMeshOpt?: boolean, extendLoader?: (loader: GLTFLoader) => void): T extends any[] ? import("three-
|
|
2
|
+
export declare function useGLTF<T extends string | string[]>(path: T, useDraco?: boolean | string, useMeshOpt?: boolean, extendLoader?: (loader: GLTFLoader) => void): T extends any[] ? (import("three/examples/jsm/loaders/GLTFLoader").GLTF & import("@react-three/fiber").ObjectMap)[] : import("three/examples/jsm/loaders/GLTFLoader").GLTF & import("@react-three/fiber").ObjectMap;
|
|
3
3
|
export declare namespace useGLTF {
|
|
4
4
|
var preload: (path: string | string[], useDraco?: string | boolean, useMeshOpt?: boolean, extendLoader?: ((loader: GLTFLoader) => void) | undefined) => undefined;
|
|
5
5
|
var clear: (input: string | string[]) => void;
|
package/core/useHelper.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber");function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=t(e);exports.useHelper=function(e,t,...n){const c=u.useRef(),a=r.useThree((e=>e.scene));return u.useEffect((()=>(t&&e.current&&(c.current=new t(e.current,...n),c.current&&a.add(c.current)),()=>{c.current&&a.remove(c.current)})),[a,t,e,n]),r.useFrame((()=>{var e;null!=(e=c.current)&&e.update&&c.current.update()})),c};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber");function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=t(e);exports.useHelper=function(e,t,...n){const c=u.useRef(),a=r.useThree((e=>e.scene));return u.useEffect((()=>(e&&t&&null!=e&&e.current&&(c.current=new t(e.current,...n),c.current&&a.add(c.current)),!e&&c.current&&a.remove(c.current),()=>{c.current&&a.remove(c.current)})),[a,t,e,n]),r.useFrame((()=>{var e;null!=(e=c.current)&&e.update&&c.current.update()})),c};
|
package/core/useHelper.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Object3D } from 'three';
|
|
3
|
+
import { Falsey } from 'utility-types';
|
|
3
4
|
declare type Helper = Object3D & {
|
|
4
5
|
update: () => void;
|
|
5
6
|
};
|
|
6
|
-
export declare function useHelper<T>(object3D: React.MutableRefObject<Object3D | undefined
|
|
7
|
+
export declare function useHelper<T>(object3D: React.MutableRefObject<Object3D | undefined> | Falsey | undefined, helperConstructor: T, ...args: any[]): React.MutableRefObject<Helper | undefined>;
|
|
7
8
|
export {};
|
package/core/useHelper.js
CHANGED
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useThree, useFrame } from '@react-three/fiber';
|
|
3
3
|
|
|
4
|
-
function useHelper(object3D,
|
|
4
|
+
function useHelper(object3D, helperConstructor, ...args) {
|
|
5
5
|
const helper = React.useRef();
|
|
6
6
|
const scene = useThree(state => state.scene);
|
|
7
7
|
React.useEffect(() => {
|
|
8
|
-
if (
|
|
9
|
-
|
|
8
|
+
if (object3D) {
|
|
9
|
+
if (helperConstructor && object3D != null && object3D.current) {
|
|
10
|
+
helper.current = new helperConstructor(object3D.current, ...args);
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
if (helper.current) {
|
|
13
|
+
scene.add(helper.current);
|
|
14
|
+
}
|
|
13
15
|
}
|
|
14
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Dispose of the helper if no object 3D is passed
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
if (!object3D && helper.current) {
|
|
23
|
+
scene.remove(helper.current);
|
|
24
|
+
}
|
|
15
25
|
|
|
16
26
|
return () => {
|
|
17
27
|
if (helper.current) {
|
|
18
28
|
scene.remove(helper.current);
|
|
19
29
|
}
|
|
20
30
|
};
|
|
21
|
-
}, [scene,
|
|
31
|
+
}, [scene, helperConstructor, object3D, args]);
|
|
22
32
|
useFrame(() => {
|
|
23
33
|
var _helper$current;
|
|
24
34
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("./useTexture.cjs.js"),r=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("./useTexture.cjs.js"),r=require("suspend-react");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 s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("three"),require("@react-three/fiber");var u=s(e);exports.useMatcapTexture=function(e=0,s=1024){const n=r.suspend((()=>fetch("https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json").then((e=>e.json()))),["matcapList"]),c=n[0],a=u.useMemo((()=>Object.keys(n).length),[]),i=`https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/${s}/${`${u.useMemo((()=>"string"==typeof e?e:"number"==typeof e?n[e]:null),[e])||c}${function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(s)}.png`}`;return[t.useTexture(i),i,a]};
|
package/core/useMatcapTexture.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useTexture } from './useTexture.js';
|
|
3
|
-
import {
|
|
3
|
+
import { suspend } from 'suspend-react';
|
|
4
4
|
|
|
5
5
|
function getFormatString(format) {
|
|
6
6
|
switch (format) {
|
|
@@ -24,10 +24,7 @@ function getFormatString(format) {
|
|
|
24
24
|
const LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json';
|
|
25
25
|
const MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';
|
|
26
26
|
function useMatcapTexture(id = 0, format = 1024) {
|
|
27
|
-
const matcapList =
|
|
28
|
-
const matcapList = await fetch(LIST_URL).then(res => res.json());
|
|
29
|
-
resolve(matcapList);
|
|
30
|
-
}), 'matcapList');
|
|
27
|
+
const matcapList = suspend(() => fetch(LIST_URL).then(res => res.json()), ['matcapList']);
|
|
31
28
|
const DEFAULT_MATCAP = matcapList[0];
|
|
32
29
|
const numTot = React.useMemo(() => Object.keys(matcapList).length, []);
|
|
33
30
|
const fileHash = React.useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("./useTexture.cjs.js"),t=require("three"),s=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("./useTexture.cjs.js"),t=require("three"),s=require("suspend-react");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("@react-three/fiber");var a=n(e);exports.useNormalTexture=function(e=0,n={}){const{repeat:o=[1,1],anisotropy:u=1,offset:c=[0,0]}=n,i=s.suspend((()=>fetch("https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/normals/normals.json").then((e=>e.json()))),["normalsList"]),f=a.useMemo((()=>Object.keys(i).length),[]),p=i[0],d=`https://rawcdn.githack.com/pmndrs/drei-assets/7a3104997e1576f83472829815b00880d88b32fb/normals/${i[e]||p}`,l=r.useTexture(d);return a.useLayoutEffect((()=>{l&&(l.wrapS=l.wrapT=t.RepeatWrapping,l.repeat=new t.Vector2(o[0],o[1]),l.offset=new t.Vector2(c[0],c[1]),l.anisotropy=u)}),[l,u,o,c]),[l,d,f]};
|
package/core/useNormalTexture.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useTexture } from './useTexture.js';
|
|
3
3
|
import { RepeatWrapping, Vector2 } from 'three';
|
|
4
|
-
import {
|
|
4
|
+
import { suspend } from 'suspend-react';
|
|
5
5
|
|
|
6
6
|
const NORMAL_ROOT = 'https://rawcdn.githack.com/pmndrs/drei-assets/7a3104997e1576f83472829815b00880d88b32fb';
|
|
7
7
|
const LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/normals/normals.json';
|
|
@@ -11,10 +11,7 @@ function useNormalTexture(id = 0, settings = {}) {
|
|
|
11
11
|
anisotropy = 1,
|
|
12
12
|
offset = [0, 0]
|
|
13
13
|
} = settings;
|
|
14
|
-
const normalsList =
|
|
15
|
-
const normalsList = await fetch(LIST_URL).then(res => res.json());
|
|
16
|
-
resolve(normalsList);
|
|
17
|
-
}), 'normalsList');
|
|
14
|
+
const normalsList = suspend(() => fetch(LIST_URL).then(res => res.json()), ['normalsList']);
|
|
18
15
|
const numTot = React.useMemo(() => Object.keys(normalsList).length, []);
|
|
19
16
|
const DEFAULT_NORMAL = normalsList[0];
|
|
20
17
|
const imageName = normalsList[id] || DEFAULT_NORMAL;
|
package/helpers/Position.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function e(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)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("three"));const r=new t.Matrix4,n=new t.Matrix4,i=[],s=new t.Mesh;class o extends t.Group{constructor(){super(),this.color=new t.Color("white"),this.instance={current:void 0},this.instanceKey={current:void 0}}get geometry(){var e;return null==(e=this.instance.current)?void 0:e.geometry}raycast(e,t){const o=this.instance.current;if(!o)return;if(!o.geometry||!o.material)return;s.geometry=o.geometry;const c=o.matrixWorld;let a=o.userData.instances.indexOf(this.instanceKey);if(-1
|
|
1
|
+
"use strict";function e(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)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("three"));const r=new t.Matrix4,n=new t.Matrix4,i=[],s=new t.Mesh;class o extends t.Group{constructor(){super(),this.color=new t.Color("white"),this.instance={current:void 0},this.instanceKey={current:void 0}}get geometry(){var e;return null==(e=this.instance.current)?void 0:e.geometry}raycast(e,t){const o=this.instance.current;if(!o)return;if(!o.geometry||!o.material)return;s.geometry=o.geometry;const c=o.matrixWorld;let a=o.userData.instances.indexOf(this.instanceKey);if(!(-1===a||a>o.count)){o.getMatrixAt(a,r),n.multiplyMatrices(c,r),s.matrixWorld=n,s.raycast(e,i);for(let e=0,r=i.length;e<r;e++){const r=i[e];r.instanceId=a,r.object=this,t.push(r)}i.length=0}}}exports.Position=o;
|
package/helpers/Position.js
CHANGED
|
@@ -34,8 +34,9 @@ class Position extends THREE.Group {
|
|
|
34
34
|
if (!parent.geometry || !parent.material) return;
|
|
35
35
|
_mesh.geometry = parent.geometry;
|
|
36
36
|
const matrixWorld = parent.matrixWorld;
|
|
37
|
-
let instanceId = parent.userData.instances.indexOf(this.instanceKey);
|
|
38
|
-
|
|
37
|
+
let instanceId = parent.userData.instances.indexOf(this.instanceKey); // If the instance wasn't found or exceeds the parents draw range, bail out
|
|
38
|
+
|
|
39
|
+
if (instanceId === -1 || instanceId > parent.count) return; // calculate the world matrix for each instance
|
|
39
40
|
|
|
40
41
|
parent.getMatrixAt(instanceId, _instanceLocalMatrix);
|
|
41
42
|
|