@react-three/drei 9.0.0-beta.3 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +293 -26
- package/core/AdaptiveEvents.cjs.js +1 -1
- package/core/AdaptiveEvents.js +8 -3
- package/core/ArcballControls.cjs.js +1 -1
- package/core/ArcballControls.js +13 -25
- 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 +3 -1
- package/core/Cloud.js +4 -1
- 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 +3 -1
- package/core/ContactShadows.js +15 -2
- package/core/CubeCamera.cjs.js +1 -1
- package/core/CubeCamera.js +6 -6
- package/core/DeviceOrientationControls.cjs.js +1 -1
- package/core/DeviceOrientationControls.d.ts +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 +96 -33
- package/core/FirstPersonControls.cjs.js +1 -1
- package/core/FirstPersonControls.d.ts +4 -2
- package/core/FirstPersonControls.js +9 -8
- package/core/Float.cjs.js +1 -1
- package/core/Float.d.ts +1 -1
- package/core/Float.js +5 -4
- package/core/FlyControls.cjs.js +1 -1
- package/core/FlyControls.d.ts +1 -0
- package/core/FlyControls.js +10 -11
- package/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoHelper.d.ts +2 -1
- package/core/GizmoHelper.js +31 -41
- package/core/Image.cjs.js +1 -1
- package/core/Image.d.ts +5 -3
- package/core/Image.js +6 -1
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.d.ts +1 -1
- 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/MapControls.cjs.js +1 -1
- package/core/MapControls.d.ts +2 -1
- package/core/MapControls.js +8 -11
- package/core/MeshReflectorMaterial.cjs.js +1 -1
- package/core/MeshReflectorMaterial.d.ts +1 -2
- package/core/MeshReflectorMaterial.js +4 -5
- package/core/OrbitControls.cjs.js +1 -1
- package/core/OrbitControls.js +18 -31
- 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 +43 -25
- 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.d.ts +1 -1
- package/core/Sampler.cjs.js +1 -0
- package/core/Sampler.d.ts +21 -0
- package/core/Sampler.js +65 -0
- package/core/SpotLight.d.ts +1 -1
- package/core/Stage.cjs.js +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 +1 -1
- package/core/Text.cjs.js +1 -1
- package/core/Text.d.ts +2 -1
- package/core/Text.js +3 -2
- package/core/TrackballControls.cjs.js +1 -1
- package/core/TrackballControls.d.ts +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 +7 -13
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +6 -0
- package/core/index.js +9 -2
- package/core/useBoxProjectedEnv.cjs.js +1 -0
- package/core/useBoxProjectedEnv.d.ts +8 -0
- package/core/useBoxProjectedEnv.js +98 -0
- package/core/useFBO.cjs.js +1 -1
- package/core/useFBO.d.ts +1 -1
- package/core/useFBO.js +22 -24
- package/core/useGLTF.d.ts +1 -1
- package/core/useHelper.d.ts +3 -1
- package/core/useMatcapTexture.cjs.js +1 -1
- package/core/useProgress.d.ts +1 -1
- 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 -34
- package/materials/SpotLightMaterial.cjs.js +1 -1
- package/materials/SpotLightMaterial.js +3 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +9 -2
- package/package.json +6 -5
- package/web/CycleRaycast.cjs.js +1 -1
- package/web/CycleRaycast.js +23 -20
- package/web/ScrollControls.cjs.js +1 -1
- package/web/ScrollControls.js +16 -12
- package/web/Select.cjs.js +1 -1
- package/web/Select.js +9 -8
- package/web/index.cjs.js +1 -1
- package/web/index.js +9 -2
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
|
|
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, "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 | "range" | "material" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "updateMorphTargets" | "isPoints" | "limit"> | 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[]>>>;
|
|
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
|
});
|
|
@@ -22,4 +22,4 @@ export declare const PositionalAudio: React.ForwardRefExoticComponent<Pick<Omit<
|
|
|
22
22
|
url: string;
|
|
23
23
|
distance?: number | undefined;
|
|
24
24
|
loop?: boolean | undefined;
|
|
25
|
-
}, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onEnded" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "source" | "stop" | "url" | "load" | "pause" | "play" | "distance" | "offset" | "loop" | "duration" | "panner" | "getOutput" | "setRefDistance" | "getRefDistance" | "setRolloffFactor" | "getRolloffFactor" | "setDistanceModel" | "getDistanceModel" | "setMaxDistance" | "getMaxDistance" | "setDirectionalCone" | "listener" | "context" | "gain" | "autoplay" | "buffer" | "detune" | "loopStart" | "loopEnd" | "playbackRate" | "isPlaying" | "hasPlaybackControl" | "sourceType" | "filters" | "setNodeSource" | "setMediaElementSource" | "setMediaStreamSource" | "setBuffer" | "
|
|
25
|
+
}, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onEnded" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "source" | "stop" | "url" | "connect" | "disconnect" | "load" | "pause" | "play" | "distance" | "offset" | "loop" | "duration" | "panner" | "getOutput" | "setRefDistance" | "getRefDistance" | "setRolloffFactor" | "getRolloffFactor" | "setDistanceModel" | "getDistanceModel" | "setMaxDistance" | "getMaxDistance" | "setDirectionalCone" | "listener" | "context" | "gain" | "autoplay" | "buffer" | "detune" | "loopStart" | "loopEnd" | "playbackRate" | "isPlaying" | "hasPlaybackControl" | "sourceType" | "filters" | "setNodeSource" | "setMediaElementSource" | "setMediaStreamSource" | "setBuffer" | "setDetune" | "getDetune" | "getFilters" | "setFilters" | "getFilter" | "setFilter" | "setPlaybackRate" | "getPlaybackRate" | "getLoop" | "setLoop" | "setLoopStart" | "setLoopEnd" | "getVolume" | "setVolume"> & React.RefAttributes<unknown>>;
|
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[]>>>;
|
|
@@ -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 {};
|
package/core/Sampler.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { MeshSurfaceSampler } from 'three-stdlib';
|
|
4
|
+
import { Vector3, Color, Object3D } from 'three';
|
|
5
|
+
|
|
6
|
+
const Sampler = ({
|
|
7
|
+
children,
|
|
8
|
+
weight,
|
|
9
|
+
transform,
|
|
10
|
+
instances,
|
|
11
|
+
mesh,
|
|
12
|
+
...props
|
|
13
|
+
}) => {
|
|
14
|
+
const group = React.useRef(null);
|
|
15
|
+
const instancedRef = React.useRef(null);
|
|
16
|
+
const meshToSampleRef = React.useRef(null);
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
var _instances$current, _mesh$current;
|
|
19
|
+
|
|
20
|
+
instancedRef.current = (_instances$current = instances == null ? void 0 : instances.current) !== null && _instances$current !== void 0 ? _instances$current : group.current.children.find(c => c.hasOwnProperty('instanceMatrix'));
|
|
21
|
+
meshToSampleRef.current = (_mesh$current = mesh == null ? void 0 : mesh.current) !== null && _mesh$current !== void 0 ? _mesh$current : group.current.children.find(c => c.type === 'Mesh');
|
|
22
|
+
}, [children, mesh == null ? void 0 : mesh.current, instances == null ? void 0 : instances.current]);
|
|
23
|
+
React.useEffect(() => {
|
|
24
|
+
if (typeof meshToSampleRef.current === 'undefined') return;
|
|
25
|
+
if (typeof instancedRef.current === 'undefined') return;
|
|
26
|
+
const sampler = new MeshSurfaceSampler(meshToSampleRef.current);
|
|
27
|
+
|
|
28
|
+
if (weight) {
|
|
29
|
+
sampler.setWeightAttribute(weight);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
sampler.build();
|
|
33
|
+
const position = new Vector3();
|
|
34
|
+
const normal = new Vector3();
|
|
35
|
+
const color = new Color();
|
|
36
|
+
const dummy = new Object3D();
|
|
37
|
+
meshToSampleRef.current.updateMatrixWorld(true);
|
|
38
|
+
|
|
39
|
+
for (let i = 0; i < instancedRef.current.count; i++) {
|
|
40
|
+
sampler.sample(position, normal, color);
|
|
41
|
+
|
|
42
|
+
if (typeof transform === 'function') {
|
|
43
|
+
transform({
|
|
44
|
+
dummy,
|
|
45
|
+
sampledMesh: meshToSampleRef.current,
|
|
46
|
+
position,
|
|
47
|
+
normal,
|
|
48
|
+
color
|
|
49
|
+
}, i);
|
|
50
|
+
} else {
|
|
51
|
+
dummy.position.copy(position);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
dummy.updateMatrix();
|
|
55
|
+
instancedRef.current.setMatrixAt(i, dummy.matrix);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
instancedRef.current.instanceMatrix.needsUpdate = true;
|
|
59
|
+
}, [children, mesh == null ? void 0 : mesh.current, instances == null ? void 0 : instances.current]);
|
|
60
|
+
return /*#__PURE__*/React.createElement("group", _extends({
|
|
61
|
+
ref: group
|
|
62
|
+
}, props), children);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export { Sampler };
|
package/core/SpotLight.d.ts
CHANGED
|
@@ -26,5 +26,5 @@ declare const SpotLight: React.ForwardRefExoticComponent<Pick<Omit<import("@reac
|
|
|
26
26
|
radiusBottom?: number | undefined;
|
|
27
27
|
opacity?: number | undefined;
|
|
28
28
|
color?: string | number | undefined;
|
|
29
|
-
}, "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" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "distance" | "opacity" | "decay" | "target" | "angle" | "intensity" | "isLight" | "shadow" | "shadowCameraFov" | "shadowCameraLeft" | "shadowCameraRight" | "shadowCameraTop" | "shadowCameraBottom" | "shadowCameraNear" | "shadowCameraFar" | "shadowBias" | "shadowMapWidth" | "shadowMapHeight" | "power" | "depthBuffer" | "
|
|
29
|
+
}, "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" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "distance" | "opacity" | "decay" | "target" | "angle" | "attenuation" | "penumbra" | "intensity" | "isLight" | "shadow" | "shadowCameraFov" | "shadowCameraLeft" | "shadowCameraRight" | "shadowCameraTop" | "shadowCameraBottom" | "shadowCameraNear" | "shadowCameraFar" | "shadowBias" | "shadowMapWidth" | "shadowMapHeight" | "power" | "depthBuffer" | "isSpotLight" | "anglePower" | "radiusTop" | "radiusBottom"> & React.RefAttributes<SpotLightImpl>>;
|
|
30
30
|
export { SpotLight };
|
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 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:
|
|
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:m="rembrandt",shadowBias:h=0,contactShadow:p={blur:2,opacity:.5,position:[0,0,0]},...b}){const g=f[m],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({scale: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":h}),c.createElement("pointLight",{position:[g.fill[0]*x,g.fill[1]*x,g.fill[2]*x],intensity:d}))};
|
package/core/Stage.js
CHANGED
|
@@ -91,8 +91,7 @@ function Stage({
|
|
|
91
91
|
}, /*#__PURE__*/React.createElement("group", {
|
|
92
92
|
ref: inner
|
|
93
93
|
}, children)), contactShadow && /*#__PURE__*/React.createElement(ContactShadows, _extends({
|
|
94
|
-
|
|
95
|
-
height: radius * 2,
|
|
94
|
+
scale: radius * 2,
|
|
96
95
|
far: radius / 2
|
|
97
96
|
}, contactShadow)), environment && /*#__PURE__*/React.createElement(Environment, {
|
|
98
97
|
preset: environment
|
package/core/Stars.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("three");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-three/fiber"),r=require("three");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 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=n(e);class o extends r.ShaderMaterial{constructor(){super({uniforms:{time:{value:0},fade:{value:1}},vertexShader:"\n uniform float time;\n attribute float size;\n varying vec3 vColor;\n void main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);\n gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(mvPosition.x + 2.0 * time + 100.0));\n gl_Position = projectionMatrix * mvPosition;\n }",fragmentShader:"\n uniform sampler2D pointTexture;\n uniform float fade;\n varying vec3 vColor;\n void main() {\n float opacity = 1.0;\n if (fade == 1.0) {\n float d = distance(gl_PointCoord, vec2(0.5, 0.5));\n opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));\n }\n gl_FragColor = vec4(vColor, opacity);\n\n #include <tonemapping_fragment>\n\t #include <encodings_fragment>\n }"})}}const i=e=>(new r.Vector3).setFromSpherical(new r.Spherical(e,Math.acos(1-2*Math.random()),2*Math.random()*Math.PI)),c=a.forwardRef((({radius:e=100,depth:n=50,count:c=5e3,saturation:s=0,factor:u=4,fade:l=!1},f)=>{const m=a.useRef(),[d,v,p]=a.useMemo((()=>{const t=[],a=[],o=Array.from({length:c},(()=>(.5+.5*Math.random())*u)),l=new r.Color;let f=e+n;const m=n/c;for(let e=0;e<c;e++)f-=m*Math.random(),t.push(...i(f).toArray()),l.setHSL(e/c,s,.9),a.push(l.r,l.g,l.b);return[new Float32Array(t),new Float32Array(a),new Float32Array(o)]}),[c,n,u,e,s]);t.useFrame((e=>m.current&&(m.current.uniforms.time.value=e.clock.getElapsedTime())));const[g]=a.useState((()=>new o));return a.createElement("points",{ref:f},a.createElement("bufferGeometry",{attach:"geometry"},a.createElement("bufferAttribute",{attach:"attributes-position",args:[d,3]}),a.createElement("bufferAttribute",{attach:"attributes-color",args:[v,3]}),a.createElement("bufferAttribute",{attach:"attributes-size",args:[p,1]})),a.createElement("primitive",{dispose:void 0,ref:m,object:g,attach:"material",blending:r.AdditiveBlending,"uniforms-fade-value":l,transparent:!0,vertexColors:!0}))}));exports.Stars=c;
|
package/core/Stars.js
CHANGED
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("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};
|
|
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.split(" ").filter((e=>e)));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
|
@@ -14,7 +14,7 @@ function Stats({
|
|
|
14
14
|
const node = parent && parent.current || document.body;
|
|
15
15
|
stats.showPanel(showPanel);
|
|
16
16
|
node == null ? void 0 : node.appendChild(stats.dom);
|
|
17
|
-
if (className) stats.dom.classList.add(className);
|
|
17
|
+
if (className) stats.dom.classList.add(...className.split(' ').filter(cls => cls));
|
|
18
18
|
const begin = addEffect(() => stats.begin());
|
|
19
19
|
const end = addAfterEffect(() => stats.end());
|
|
20
20
|
return () => {
|
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"),o=require("suspend-react");function
|
|
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 c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=c(e),i=u(t);const f=i.forwardRef((({anchorX:e="center",anchorY:t="middle",font:c,children:u,characters:f,onSync:s,...d},l)=>{const p=n.useThree((({invalidate:e})=>e)),[h]=i.useState((()=>new r.Text)),[b,y]=i.useMemo((()=>{const e=[];let t="";return i.Children.forEach(u,(r=>{"string"==typeof r||"number"==typeof r?t+=r:e.push(r)})),[e,t]}),[u]);return o.suspend((()=>new Promise((e=>r.preloadFont({font:c,characters:f},e)))),["troika-text",c,f]),i.useLayoutEffect((()=>{h.sync((()=>{p(),s&&s(h)}))})),i.useEffect((()=>()=>h.dispose()),[h]),i.createElement("primitive",a.default({object:h,ref:l,font:c,text:y,anchorX:e,anchorY:t},d),b)}));exports.Text=f;
|
package/core/Text.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export declare const Text: React.ForwardRefExoticComponent<Pick<Omit<ReactThreeF
|
|
|
20
20
|
dispose?: (() => void) | null | undefined;
|
|
21
21
|
} & import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers & {
|
|
22
22
|
children: React.ReactNode;
|
|
23
|
+
characters?: string | undefined;
|
|
23
24
|
color?: ReactThreeFiber.Color | undefined;
|
|
24
25
|
fontSize?: number | undefined;
|
|
25
26
|
maxWidth?: number | undefined;
|
|
@@ -46,4 +47,4 @@ export declare const Text: React.ForwardRefExoticComponent<Pick<Omit<ReactThreeF
|
|
|
46
47
|
fillOpacity?: number | undefined;
|
|
47
48
|
debugSDF?: boolean | undefined;
|
|
48
49
|
onSync?: ((troika: TextMeshImpl) => void) | undefined;
|
|
49
|
-
}, "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" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "font" | "material" | "direction" | "fontSize" | "letterSpacing" | "lineHeight" | "maxWidth" | "outlineColor" | "outlineWidth" | "overflowWrap" | "textAlign" | "whiteSpace" | "fillOpacity" | "strokeOpacity" | "strokeWidth" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "anchorX" | "anchorY" | "onSync" | "clipRect" | "depthOffset" | "outlineOffsetX" | "outlineOffsetY" | "outlineBlur" | "outlineOpacity" | "strokeColor" | "debugSDF"> & React.RefAttributes<unknown>>;
|
|
50
|
+
}, "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" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "font" | "material" | "direction" | "fontSize" | "letterSpacing" | "lineHeight" | "maxWidth" | "outlineColor" | "outlineWidth" | "overflowWrap" | "textAlign" | "whiteSpace" | "fillOpacity" | "strokeOpacity" | "strokeWidth" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "anchorX" | "anchorY" | "characters" | "onSync" | "clipRect" | "depthOffset" | "outlineOffsetX" | "outlineOffsetY" | "outlineBlur" | "outlineOpacity" | "strokeColor" | "debugSDF"> & React.RefAttributes<unknown>>;
|
package/core/Text.js
CHANGED
|
@@ -10,6 +10,7 @@ const Text = /*#__PURE__*/React.forwardRef(({
|
|
|
10
10
|
anchorY = 'middle',
|
|
11
11
|
font,
|
|
12
12
|
children,
|
|
13
|
+
characters,
|
|
13
14
|
onSync,
|
|
14
15
|
...props
|
|
15
16
|
}, ref) => {
|
|
@@ -31,8 +32,8 @@ const Text = /*#__PURE__*/React.forwardRef(({
|
|
|
31
32
|
}, [children]);
|
|
32
33
|
suspend(() => new Promise(res => preloadFont({
|
|
33
34
|
font,
|
|
34
|
-
characters
|
|
35
|
-
}, res)), ['troika-text', font,
|
|
35
|
+
characters
|
|
36
|
+
}, res)), ['troika-text', font, characters]);
|
|
36
37
|
React.useLayoutEffect(() => void troikaMesh.sync(() => {
|
|
37
38
|
invalidate();
|
|
38
39
|
if (onSync) onSync(troikaMesh);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function 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 s=o(e),c=a(r);const u=c.forwardRef((({makeDefault:e,camera:r,domElement:o,regress:a,onChange:u,onStart:i,onEnd:l
|
|
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 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 s=o(e),c=a(r);const u=c.forwardRef((({makeDefault:e,camera:r,domElement:o,regress:a,onChange:u,onStart:i,onEnd:f,...l},d)=>{const{invalidate:v,camera:m,gl:b,events:E,set:p,get:g,performance:h,viewport:j}=t.useThree(),O=r||m,L=o||E.connected||b.domElement,y=c.useMemo((()=>new n.TrackballControls(O)),[O]);return t.useFrame((()=>{y.enabled&&y.update()})),c.useEffect((()=>(y.connect(L),()=>{y.dispose()})),[L,a,y,v]),c.useEffect((()=>{const e=e=>{v(),a&&h.regress(),u&&u(e)};return y.addEventListener("change",e),i&&y.addEventListener("start",i),f&&y.addEventListener("end",f),()=>{i&&y.removeEventListener("start",i),f&&y.removeEventListener("end",f),y.removeEventListener("change",e)}}),[u,i,f]),c.useEffect((()=>{y.handleResize()}),[j]),c.useEffect((()=>{if(e){const e=g().controls;return p({controls:y}),()=>p({controls:e})}}),[e,y]),c.createElement("primitive",s.default({ref:d,object:y},l))}));exports.TrackballControls=u;
|
|
@@ -12,4 +12,4 @@ export declare type TrackballControlsProps = ReactThreeFiber.Overwrite<ReactThre
|
|
|
12
12
|
onStart?: (e?: THREE.Event) => void;
|
|
13
13
|
onEnd?: (e?: THREE.Event) => void;
|
|
14
14
|
}>;
|
|
15
|
-
export declare const TrackballControls: React.ForwardRefExoticComponent<Pick<TrackballControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "screen" | "reset" | "enabled" | "
|
|
15
|
+
export declare const TrackballControls: React.ForwardRefExoticComponent<Pick<TrackballControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "screen" | "reset" | "enabled" | "connect" | "update" | "onStart" | "keys" | "target" | "makeDefault" | "domElement" | "minDistance" | "maxDistance" | "zoomSpeed" | "rotateSpeed" | "panSpeed" | "mouseButtons" | "onEnd" | "regress" | "noRotate" | "noZoom" | "noPan" | "staticMoving" | "dynamicDampingFactor" | "cursorZoom" | "handleResize"> & React.RefAttributes<TrackballControlsImpl>>;
|
|
@@ -24,11 +24,15 @@ const TrackballControls = /*#__PURE__*/React.forwardRef(({
|
|
|
24
24
|
viewport
|
|
25
25
|
} = useThree();
|
|
26
26
|
const explCamera = camera || defaultCamera;
|
|
27
|
-
const explDomElement = domElement ||
|
|
27
|
+
const explDomElement = domElement || events.connected || gl.domElement;
|
|
28
28
|
const controls = React.useMemo(() => new TrackballControls$1(explCamera), [explCamera]);
|
|
29
29
|
useFrame(() => {
|
|
30
30
|
if (controls.enabled) controls.update();
|
|
31
31
|
});
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
controls.connect(explDomElement);
|
|
34
|
+
return () => void controls.dispose();
|
|
35
|
+
}, [explDomElement, regress, controls, invalidate]);
|
|
32
36
|
React.useEffect(() => {
|
|
33
37
|
const callback = e => {
|
|
34
38
|
invalidate();
|
|
@@ -36,17 +40,15 @@ const TrackballControls = /*#__PURE__*/React.forwardRef(({
|
|
|
36
40
|
if (onChange) onChange(e);
|
|
37
41
|
};
|
|
38
42
|
|
|
39
|
-
controls.connect(explDomElement);
|
|
40
43
|
controls.addEventListener('change', callback);
|
|
41
44
|
if (onStart) controls.addEventListener('start', onStart);
|
|
42
45
|
if (onEnd) controls.addEventListener('end', onEnd);
|
|
43
46
|
return () => {
|
|
44
|
-
controls.removeEventListener('change', callback);
|
|
45
47
|
if (onStart) controls.removeEventListener('start', onStart);
|
|
46
48
|
if (onEnd) controls.removeEventListener('end', onEnd);
|
|
47
|
-
controls.
|
|
49
|
+
controls.removeEventListener('change', callback);
|
|
48
50
|
};
|
|
49
|
-
}, [
|
|
51
|
+
}, [onChange, onStart, onEnd]);
|
|
50
52
|
React.useEffect(() => {
|
|
51
53
|
controls.handleResize();
|
|
52
54
|
}, [viewport]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-three/fiber"),t=require("react"),r=require("three"),n=require("meshline");function o(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 i=o(t);const s={width:.2,length:1,decay:1,local:!1,stride:0,interval:1},u=(e,t=1)=>(e.set(e.subarray(t)),e.fill(-1/0,-t),e);function c(t,n){const{length:o,local:c,decay:l,interval:a,stride:f}={...s,...n},d=i.useRef(),[h]=i.useState((()=>new r.Vector3));i.useLayoutEffect((()=>{t&&(d.current=Float32Array.from({length:10*o*3},((e,r)=>t.position.getComponent(r%3))))}),[o,t]);const p=i.useRef(new r.Vector3),y=i.useRef(0);return e.useFrame((()=>{if(t&&d.current){if(0===y.current){let e;c?e=t.position:(t.getWorldPosition(h),e=h);const r=1*l;for(let t=0;t<r;t++)e.distanceTo(p.current)<f||(u(d.current,3),d.current.set(e.toArray(),d.current.length-3));p.current.copy(e)}y.current++,y.current=y.current%a}})),d}const l=i.forwardRef(((t,o)=>{const{children:u}=t,{width:l,length:a,decay:f,local:d,stride:h,interval:p}={...s,...t},{color:y="hotpink",attenuation:g,target:m}=t,v=e.useThree((e=>e.size)),b=i.useRef(null),[w,M]=i.useState(null),j=c(w,{length:a,decay:f,local:d,stride:h,interval:p});i.useEffect((()=>{const e=(null==m?void 0:m.current)||b.current.children.find((e=>e instanceof r.Object3D));e&&M(e)}),[j,m]);const O=i.useMemo((()=>new n.MeshLine),[]),E=i.useMemo((()=>{var e;const t=new n.MeshLineMaterial({lineWidth:.1*l,color:y,sizeAttenuation:1,resolution:new r.Vector2(v.width,v.height)});let o;if(u)if(Array.isArray(u))o=u.find((e=>{const t=e;return"string"==typeof t.type&&"meshLineMaterial"===t.type}));else{const e=u;"string"==typeof e.type&&"meshLineMaterial"===e.type&&(o=e)}return"object"==typeof(null==(e=o)?void 0:e.props)&&t.setValues(o.props),t}),[l,y,v,u]);return i.useEffect((()=>{E.uniforms.resolution.value.set(v.width,v.height)}),[v]),e.useFrame((()=>{j.current&&O.setPoints(j.current,g)})),i.createElement("group",null,i.createElement("mesh",{ref:o,geometry:O,material:E}),i.createElement("group",{ref:b},u))}));exports.Trail=l,exports.useTrail=c;
|
package/core/Trail.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ColorRepresentation, Object3D } from 'three';
|
|
3
|
+
import { MeshLine as MeshLineImpl } from 'meshline';
|
|
4
|
+
declare type Settings = {
|
|
5
|
+
width: number;
|
|
6
|
+
length: number;
|
|
7
|
+
decay: number;
|
|
8
|
+
local: boolean;
|
|
9
|
+
stride: number;
|
|
10
|
+
interval: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function useTrail(target: Object3D, settings: Partial<Settings>): React.MutableRefObject<Float32Array | undefined>;
|
|
13
|
+
export declare type MeshLine = THREE.Mesh & MeshLineImpl;
|
|
14
|
+
export declare const Trail: React.ForwardRefExoticComponent<{
|
|
15
|
+
color?: ColorRepresentation | undefined;
|
|
16
|
+
attenuation?: ((width: number) => number) | undefined;
|
|
17
|
+
target?: React.MutableRefObject<Object3D<import("three").Event>> | undefined;
|
|
18
|
+
} & Partial<Settings> & {
|
|
19
|
+
children?: React.ReactNode;
|
|
20
|
+
} & React.RefAttributes<MeshLine>>;
|
|
21
|
+
export {};
|