@react-three/drei 9.51.8 → 9.51.9
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/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoHelper.d.ts +2 -3
- package/core/GizmoHelper.js +17 -50
- package/core/GizmoViewcube.cjs.js +1 -1
- package/core/GizmoViewcube.js +2 -6
- package/core/GizmoViewport.cjs.js +1 -1
- package/core/GizmoViewport.js +1 -3
- package/core/Hud.cjs.js +1 -1
- package/core/Hud.js +6 -1
- package/index.cjs.js +1 -1
- package/package.json +1 -1
package/core/GizmoHelper.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),t=require("three"),n=require("./OrthographicCamera.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),t=require("three"),n=require("./OrthographicCamera.cjs.js"),o=require("./Hud.cjs.js");function u(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)}require("@babel/runtime/helpers/extends"),require("react-merge-refs"),require("./useFBO.cjs.js");var i=u(e);const a=i.createContext({}),c=2*Math.PI,s=new t.Object3D,l=new t.Matrix4,[p,d]=[new t.Quaternion,new t.Quaternion],f=new t.Vector3,h=new t.Vector3;exports.GizmoHelper=({alignment:e="bottom-right",margin:u=[80,80],renderPriority:m=1,onUpdate:y,onTarget:g,children:b})=>{const j=r.useThree((e=>e.size)),w=r.useThree((e=>e.camera)),q=r.useThree((e=>e.controls)),v=r.useThree((e=>e.invalidate)),O=i.useRef(),x=i.useRef(null),P=i.useRef(!1),T=i.useRef(0),C=i.useRef(new t.Vector3(0,0,0)),R=i.useRef(new t.Vector3(0,0,0));i.useEffect((()=>{R.current.copy(w.up)}),[w]);const E=i.useCallback((e=>{P.current=!0,(q||g)&&(C.current=(null==q?void 0:q.target)||(null==g?void 0:g())),T.current=w.position.distanceTo(f),p.copy(w.quaternion),h.copy(e).multiplyScalar(T.current).add(f),s.lookAt(h),d.copy(s.quaternion),v()}),[q,w,g,v]);r.useFrame(((e,r)=>{if(x.current&&O.current){var t;if(P.current)if(p.angleTo(d)<.01)P.current=!1,"minPolarAngle"in q&&w.up.copy(R.current);else{const e=r*c;p.rotateTowards(d,e),w.position.set(0,0,1).applyQuaternion(p).multiplyScalar(T.current).add(C.current),w.up.set(0,1,0).applyQuaternion(p).normalize(),w.quaternion.copy(p),y?y():q&&q.update(),v()}l.copy(w.matrix).invert(),null==(t=O.current)||t.quaternion.setFromRotationMatrix(l)}}));const M=i.useMemo((()=>({tweenCamera:E})),[E]),[z,k]=u,Q=e.endsWith("-center")?0:e.endsWith("-left")?-j.width/2+z:j.width/2-z,V=e.startsWith("center-")?0:e.startsWith("top-")?j.height/2-k:-j.height/2+k;return i.createElement(o.Hud,{renderPriority:m},i.createElement(a.Provider,{value:M},i.createElement(n.OrthographicCamera,{makeDefault:!0,ref:x,position:[0,0,200]}),i.createElement("group",{ref:O,position:[Q,V,0]},b)))},exports.useGizmoContext=()=>i.useContext(a);
|
package/core/GizmoHelper.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Vector3 } from 'three';
|
|
2
2
|
declare type GizmoHelperContext = {
|
|
3
3
|
tweenCamera: (direction: Vector3) => void;
|
|
4
|
-
raycast: (raycaster: Raycaster, intersects: Intersection[]) => void;
|
|
5
4
|
};
|
|
6
5
|
export declare const useGizmoContext: () => GizmoHelperContext;
|
|
7
6
|
export declare type GizmoHelperProps = JSX.IntrinsicElements['group'] & {
|
|
@@ -12,5 +11,5 @@ export declare type GizmoHelperProps = JSX.IntrinsicElements['group'] & {
|
|
|
12
11
|
onUpdate?: () => void;
|
|
13
12
|
onTarget?: () => Vector3;
|
|
14
13
|
};
|
|
15
|
-
export declare const GizmoHelper: ({ alignment, margin, renderPriority,
|
|
14
|
+
export declare const GizmoHelper: ({ alignment, margin, renderPriority, onUpdate, onTarget, children, }: GizmoHelperProps) => any;
|
|
16
15
|
export {};
|
package/core/GizmoHelper.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { useThree, useFrame
|
|
3
|
-
import { Object3D, Matrix4, Quaternion, Vector3
|
|
2
|
+
import { useThree, useFrame } from '@react-three/fiber';
|
|
3
|
+
import { Object3D, Matrix4, Quaternion, Vector3 } from 'three';
|
|
4
4
|
import { OrthographicCamera } from './OrthographicCamera.js';
|
|
5
|
-
import {
|
|
5
|
+
import { Hud } from './Hud.js';
|
|
6
6
|
|
|
7
7
|
const Context = /*#__PURE__*/React.createContext({});
|
|
8
8
|
const useGizmoContext = () => {
|
|
@@ -23,35 +23,18 @@ const isOrbitControls = controls => {
|
|
|
23
23
|
const GizmoHelper = ({
|
|
24
24
|
alignment = 'bottom-right',
|
|
25
25
|
margin = [80, 80],
|
|
26
|
-
renderPriority =
|
|
27
|
-
autoClear = true,
|
|
26
|
+
renderPriority = 1,
|
|
28
27
|
onUpdate,
|
|
29
28
|
onTarget,
|
|
30
|
-
children
|
|
29
|
+
children
|
|
31
30
|
}) => {
|
|
32
|
-
const size = useThree(
|
|
33
|
-
|
|
34
|
-
}) => size);
|
|
35
|
-
const mainCamera = useThree(({
|
|
36
|
-
camera
|
|
37
|
-
}) => camera); // @ts-expect-error new in @react-three/fiber@7.0.5
|
|
31
|
+
const size = useThree(state => state.size);
|
|
32
|
+
const mainCamera = useThree(state => state.camera); // @ts-ignore
|
|
38
33
|
|
|
39
|
-
const defaultControls = useThree(
|
|
40
|
-
|
|
41
|
-
}) => controls);
|
|
42
|
-
const gl = useThree(({
|
|
43
|
-
gl
|
|
44
|
-
}) => gl);
|
|
45
|
-
const scene = useThree(({
|
|
46
|
-
scene
|
|
47
|
-
}) => scene);
|
|
48
|
-
const invalidate = useThree(({
|
|
49
|
-
invalidate
|
|
50
|
-
}) => invalidate);
|
|
51
|
-
const backgroundRef = React.useRef();
|
|
34
|
+
const defaultControls = useThree(state => state.controls);
|
|
35
|
+
const invalidate = useThree(state => state.invalidate);
|
|
52
36
|
const gizmoRef = React.useRef();
|
|
53
37
|
const virtualCam = React.useRef(null);
|
|
54
|
-
const [virtualScene] = React.useState(() => new Scene());
|
|
55
38
|
const animating = React.useRef(false);
|
|
56
39
|
const radius = React.useRef(0);
|
|
57
40
|
const focusPoint = React.useRef(new Vector3(0, 0, 0));
|
|
@@ -71,19 +54,6 @@ const GizmoHelper = ({
|
|
|
71
54
|
q2.copy(dummy.quaternion);
|
|
72
55
|
invalidate();
|
|
73
56
|
}, [defaultControls, mainCamera, onTarget, invalidate]);
|
|
74
|
-
React.useEffect(() => {
|
|
75
|
-
if (scene.background) {
|
|
76
|
-
//Interchange the actual scene background with the virtual scene
|
|
77
|
-
backgroundRef.current = scene.background;
|
|
78
|
-
scene.background = null;
|
|
79
|
-
virtualScene.background = backgroundRef.current;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return () => {
|
|
83
|
-
// reset on unmount
|
|
84
|
-
if (backgroundRef.current) scene.background = backgroundRef.current;
|
|
85
|
-
};
|
|
86
|
-
}, []);
|
|
87
57
|
useFrame((_, delta) => {
|
|
88
58
|
if (virtualCam.current && gizmoRef.current) {
|
|
89
59
|
var _gizmoRef$current;
|
|
@@ -113,31 +83,28 @@ const GizmoHelper = ({
|
|
|
113
83
|
|
|
114
84
|
|
|
115
85
|
matrix.copy(mainCamera.matrix).invert();
|
|
116
|
-
(_gizmoRef$current = gizmoRef.current) == null ? void 0 : _gizmoRef$current.quaternion.setFromRotationMatrix(matrix);
|
|
117
|
-
|
|
118
|
-
if (autoClear) gl.autoClear = false;
|
|
119
|
-
gl.clearDepth();
|
|
120
|
-
gl.render(virtualScene, virtualCam.current);
|
|
86
|
+
(_gizmoRef$current = gizmoRef.current) == null ? void 0 : _gizmoRef$current.quaternion.setFromRotationMatrix(matrix);
|
|
121
87
|
}
|
|
122
|
-
}
|
|
123
|
-
const raycast = useCamera(virtualCam);
|
|
88
|
+
});
|
|
124
89
|
const gizmoHelperContext = React.useMemo(() => ({
|
|
125
|
-
tweenCamera
|
|
126
|
-
raycast
|
|
90
|
+
tweenCamera
|
|
127
91
|
}), [tweenCamera]); // Position gizmo component within scene
|
|
128
92
|
|
|
129
93
|
const [marginX, marginY] = margin;
|
|
130
94
|
const x = alignment.endsWith('-center') ? 0 : alignment.endsWith('-left') ? -size.width / 2 + marginX : size.width / 2 - marginX;
|
|
131
95
|
const y = alignment.startsWith('center-') ? 0 : alignment.startsWith('top-') ? size.height / 2 - marginY : -size.height / 2 + marginY;
|
|
132
|
-
return
|
|
96
|
+
return /*#__PURE__*/React.createElement(Hud, {
|
|
97
|
+
renderPriority: renderPriority
|
|
98
|
+
}, /*#__PURE__*/React.createElement(Context.Provider, {
|
|
133
99
|
value: gizmoHelperContext
|
|
134
100
|
}, /*#__PURE__*/React.createElement(OrthographicCamera, {
|
|
101
|
+
makeDefault: true,
|
|
135
102
|
ref: virtualCam,
|
|
136
103
|
position: [0, 0, 200]
|
|
137
104
|
}), /*#__PURE__*/React.createElement("group", {
|
|
138
105
|
ref: gizmoRef,
|
|
139
106
|
position: [x, y, 0]
|
|
140
|
-
},
|
|
107
|
+
}, children)));
|
|
141
108
|
};
|
|
142
109
|
|
|
143
110
|
export { GizmoHelper, useGizmoContext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),o=require("./GizmoHelper.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),o=require("./GizmoHelper.cjs.js"),n=require("three");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useFBO.cjs.js"),require("./Hud.cjs.js");var l=a(e),s=i(t);const c="#f0f0f0",u="#999",p="black",m="black",f=["Right","Left","Top","Bottom","Front","Back"],h=e=>new n.Vector3(...e).multiplyScalar(.38),d=[[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]].map(h),g=[.25,.25,.25],y=[[1,1,0],[1,0,1],[1,0,-1],[1,-1,0],[0,1,1],[0,1,-1],[0,-1,1],[0,-1,-1],[-1,1,0],[-1,0,1],[-1,0,-1],[-1,-1,0]].map(h),b=y.map((e=>e.toArray().map((e=>0==e?.5:.25)))),x=({hover:e,index:t,font:o="20px Inter var, Arial, sans-serif",faces:a=f,color:i=c,hoverColor:l=u,textColor:h=p,strokeColor:d=m,opacity:g=1})=>{const y=r.useThree((e=>e.gl)),b=s.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const r=e.getContext("2d");return r.fillStyle=i,r.fillRect(0,0,e.width,e.height),r.strokeStyle=d,r.strokeRect(0,0,e.width,e.height),r.font=o,r.textAlign="center",r.fillStyle=h,r.fillText(a[t].toUpperCase(),64,76),new n.CanvasTexture(e)}),[t,a,o,i,h,d]);return s.createElement("meshLambertMaterial",{map:b,"map-encoding":y.outputEncoding,"map-anisotropy":y.capabilities.getMaxAnisotropy()||1,attach:`material-${t}`,color:e?l:"white",transparent:!0,opacity:g})},C=e=>{const{tweenCamera:t}=o.useGizmoContext(),[r,n]=s.useState(null);return s.createElement("mesh",{onPointerOut:e=>{e.stopPropagation(),n(null)},onPointerMove:e=>{e.stopPropagation(),n(Math.floor(e.faceIndex/2))},onClick:e.onClick||(e=>{e.stopPropagation(),t(e.face.normal)})},[...Array(6)].map(((t,o)=>s.createElement(x,l.default({key:o,index:o,hover:r===o},e)))),s.createElement("boxGeometry",null))},E=({onClick:e,dimensions:t,position:r,hoverColor:n=u})=>{const{tweenCamera:a}=o.useGizmoContext(),[i,l]=s.useState(!1);return s.createElement("mesh",{scale:1.01,position:r,onPointerOver:e=>{e.stopPropagation(),l(!0)},onPointerOut:e=>{e.stopPropagation(),l(!1)},onClick:e||(e=>{e.stopPropagation(),a(r)})},s.createElement("meshBasicMaterial",{color:i?n:"white",transparent:!0,opacity:.6,visible:i}),s.createElement("boxGeometry",{args:t}))};exports.GizmoViewcube=e=>s.createElement("group",{scale:[60,60,60]},s.createElement(C,e),y.map(((t,r)=>s.createElement(E,l.default({key:r,position:t,dimensions:b[r]},e)))),d.map(((t,r)=>s.createElement(E,l.default({key:r,position:t,dimensions:g},e)))),s.createElement("ambientLight",{intensity:.5}),s.createElement("pointLight",{position:[10,10,10],intensity:.5}));
|
package/core/GizmoViewcube.js
CHANGED
|
@@ -59,8 +59,7 @@ const FaceMaterial = ({
|
|
|
59
59
|
|
|
60
60
|
const FaceCube = props => {
|
|
61
61
|
const {
|
|
62
|
-
tweenCamera
|
|
63
|
-
raycast
|
|
62
|
+
tweenCamera
|
|
64
63
|
} = useGizmoContext();
|
|
65
64
|
const [hover, setHover] = React.useState(null);
|
|
66
65
|
|
|
@@ -80,7 +79,6 @@ const FaceCube = props => {
|
|
|
80
79
|
};
|
|
81
80
|
|
|
82
81
|
return /*#__PURE__*/React.createElement("mesh", {
|
|
83
|
-
raycast: raycast,
|
|
84
82
|
onPointerOut: handlePointerOut,
|
|
85
83
|
onPointerMove: handlePointerMove,
|
|
86
84
|
onClick: props.onClick || handleClick
|
|
@@ -98,8 +96,7 @@ const EdgeCube = ({
|
|
|
98
96
|
hoverColor = colors.hover
|
|
99
97
|
}) => {
|
|
100
98
|
const {
|
|
101
|
-
tweenCamera
|
|
102
|
-
raycast
|
|
99
|
+
tweenCamera
|
|
103
100
|
} = useGizmoContext();
|
|
104
101
|
const [hover, setHover] = React.useState(false);
|
|
105
102
|
|
|
@@ -121,7 +118,6 @@ const EdgeCube = ({
|
|
|
121
118
|
return /*#__PURE__*/React.createElement("mesh", {
|
|
122
119
|
scale: 1.01,
|
|
123
120
|
position: position,
|
|
124
|
-
raycast: raycast,
|
|
125
121
|
onPointerOver: handlePointerOver,
|
|
126
122
|
onPointerOut: handlePointerOut,
|
|
127
123
|
onClick: onClick || handleClick
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),a=require("three"),o=require("./GizmoHelper.cjs.js");function n(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("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useFBO.cjs.js"),require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),a=require("three"),o=require("./GizmoHelper.cjs.js");function n(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("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useFBO.cjs.js"),require("./Hud.cjs.js");var i=n(e),c=l(t);function s({scale:e=[.8,.05,.05],color:t,rotation:r}){return c.createElement("group",{rotation:r},c.createElement("mesh",{position:[.4,0,0]},c.createElement("boxGeometry",{args:e}),c.createElement("meshBasicMaterial",{color:t,toneMapped:!1})))}function u({onClick:e,font:t,disabled:o,arcStyle:n,label:l,labelColor:s,axisHeadScale:u=1,...p}){const d=r.useThree((e=>e.gl)),f=c.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const r=e.getContext("2d");return r.beginPath(),r.arc(32,32,16,0,2*Math.PI),r.closePath(),r.fillStyle=n,r.fill(),l&&(r.font=t,r.textAlign="center",r.fillStyle=s,r.fillText(l,32,41)),new a.CanvasTexture(e)}),[n,l,s,t]),[m,b]=c.useState(!1),g=(l?1:.75)*(m?1.2:1)*u;return c.createElement("sprite",i.default({scale:g,onPointerOver:o?void 0:e=>{e.stopPropagation(),b(!0)},onPointerOut:o?void 0:e||(e=>{e.stopPropagation(),b(!1)})},p),c.createElement("spriteMaterial",{map:f,"map-encoding":d.outputEncoding,"map-anisotropy":d.capabilities.getMaxAnisotropy()||1,alphaTest:.3,opacity:l?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,hideAxisHeads:t,disabled:r,font:a="18px Inter var, Arial, sans-serif",axisColors:n=["#ff2060","#20df80","#2080ff"],axisHeadScale:l=1,axisScale:p,labels:d=["X","Y","Z"],labelColor:f="#000",onClick:m,...b})=>{const[g,E,h]=n,{tweenCamera:y}=o.useGizmoContext(),x={font:a,disabled:r,labelColor:f,onClick:m,axisHeadScale:l,onPointerDown:r?void 0:e=>{y(e.object.position),e.stopPropagation()}};return c.createElement("group",i.default({scale:40},b),c.createElement(s,{color:g,rotation:[0,0,0],scale:p}),c.createElement(s,{color:E,rotation:[0,0,Math.PI/2],scale:p}),c.createElement(s,{color:h,rotation:[0,-Math.PI/2,0],scale:p}),!t&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[1,0,0],label:d[0]},x)),c.createElement(u,i.default({arcStyle:E,position:[0,1,0],label:d[1]},x)),c.createElement(u,i.default({arcStyle:h,position:[0,0,1],label:d[2]},x)),!e&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[-1,0,0]},x)),c.createElement(u,i.default({arcStyle:E,position:[0,-1,0]},x)),c.createElement(u,i.default({arcStyle:h,position:[0,0,-1]},x)))),c.createElement("ambientLight",{intensity:.5}),c.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
|
package/core/GizmoViewport.js
CHANGED
|
@@ -94,14 +94,12 @@ const GizmoViewport = ({
|
|
|
94
94
|
}) => {
|
|
95
95
|
const [colorX, colorY, colorZ] = axisColors;
|
|
96
96
|
const {
|
|
97
|
-
tweenCamera
|
|
98
|
-
raycast
|
|
97
|
+
tweenCamera
|
|
99
98
|
} = useGizmoContext();
|
|
100
99
|
const axisHeadProps = {
|
|
101
100
|
font,
|
|
102
101
|
disabled,
|
|
103
102
|
labelColor,
|
|
104
|
-
raycast,
|
|
105
103
|
onClick,
|
|
106
104
|
axisHeadScale,
|
|
107
105
|
onPointerDown: !disabled ? e => {
|
package/core/Hud.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var a=n(e),u=n(r);function c({defaultScene:e,defaultCamera:r,renderPriority:n=1}){const{gl:a,scene:c,camera:l}=t.useThree();return t.useFrame((()=>{1===n&&(a.autoClear=!0,a.render(e,r)),a.autoClear=!1,a.clearDepth(),a.render(c,l)}),n),u.createElement(u.Fragment,null)}exports.Hud=function({children:e,renderPriority:r=1}){const{scene:n,camera:l}=t.useThree(),[
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var a=n(e),u=n(r);function c({defaultScene:e,defaultCamera:r,renderPriority:n=1}){const{gl:a,scene:c,camera:l}=t.useThree();let o;return t.useFrame((()=>{o=a.autoClear,1===n&&(a.autoClear=!0,a.render(e,r)),a.autoClear=!1,a.clearDepth(),a.render(c,l),a.autoClear=o}),n),u.createElement(u.Fragment,null)}exports.Hud=function({children:e,renderPriority:r=1}){const{scene:n,camera:l}=t.useThree(),[o]=u.useState((()=>new a.Scene));return u.createElement(u.Fragment,null,t.createPortal(u.createElement(u.Fragment,null,e,u.createElement(c,{defaultScene:n,defaultCamera:l,renderPriority:r})),o,{events:{priority:r+1}}))};
|
package/core/Hud.js
CHANGED
|
@@ -12,7 +12,10 @@ function RenderHud({
|
|
|
12
12
|
scene,
|
|
13
13
|
camera
|
|
14
14
|
} = useThree();
|
|
15
|
+
let oldCLear;
|
|
15
16
|
useFrame(() => {
|
|
17
|
+
oldCLear = gl.autoClear;
|
|
18
|
+
|
|
16
19
|
if (renderPriority === 1) {
|
|
17
20
|
// Clear scene and render the default scene
|
|
18
21
|
gl.autoClear = true;
|
|
@@ -22,7 +25,9 @@ function RenderHud({
|
|
|
22
25
|
|
|
23
26
|
gl.autoClear = false;
|
|
24
27
|
gl.clearDepth();
|
|
25
|
-
gl.render(scene, camera);
|
|
28
|
+
gl.render(scene, camera); // Restore default
|
|
29
|
+
|
|
30
|
+
gl.autoClear = oldCLear;
|
|
26
31
|
}, renderPriority);
|
|
27
32
|
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
28
33
|
}
|