@react-three/drei 7.22.1 → 7.22.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.
@@ -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("./GizmoHelper.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var l=o(e),i=n(t);function c({color:e,rotation:t}){return i.createElement("group",{rotation:t},i.createElement("mesh",{position:[.4,0,0]},i.createElement("boxGeometry",{args:[.8,.05,.05]}),i.createElement("meshBasicMaterial",{color:e,toneMapped:!1})))}function s({onClick:e,font:t,disabled:a,arcStyle:o,label:n,labelColor:c,...s}){const u=i.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const a=e.getContext("2d");return a.beginPath(),a.arc(32,32,16,0,2*Math.PI),a.closePath(),a.fillStyle=o,a.fill(),n&&(a.font=t,a.textAlign="center",a.fillStyle=c,a.fillText(n,32,41)),new r.CanvasTexture(e)}),[o,n,c,t]),[f,p]=i.useState(!1),m=(n?1:.75)*(f?1.2:1);return i.createElement("sprite",l.default({scale:m,onPointerOver:a?void 0:e=>{e.stopPropagation(),p(!0)},onPointerOut:a?void 0:e||(e=>{e.stopPropagation(),p(!1)})},s),i.createElement("spriteMaterial",{map:u,alphaTest:.3,opacity:n?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,disabled:t,font:r="18px Inter var, Arial, sans-serif",axisColors:o=["#ff3653","#0adb50","#2c8fdf"],labelColor:n="#000",onClick:u,...f})=>{const[p,m,d]=o,{tweenCamera:b,raycast:E}=a.useGizmoContext(),h={font:r,disabled:t,labelColor:n,raycast:E,onClick:u,onPointerDown:t?void 0:e=>{b(e.object.position),e.stopPropagation()}};return i.createElement("group",l.default({scale:40},f),i.createElement(c,{color:p,rotation:[0,0,0]}),i.createElement(c,{color:m,rotation:[0,0,Math.PI/2]}),i.createElement(c,{color:d,rotation:[0,-Math.PI/2,0]}),i.createElement(s,l.default({arcStyle:p,position:[1,0,0],label:"X"},h)),i.createElement(s,l.default({arcStyle:m,position:[0,1,0],label:"Y"},h)),i.createElement(s,l.default({arcStyle:d,position:[0,0,1],label:"Z"},h)),!e&&i.createElement(i.Fragment,null,i.createElement(s,l.default({arcStyle:p,position:[-1,0,0]},h)),i.createElement(s,l.default({arcStyle:m,position:[0,-1,0]},h)),i.createElement(s,l.default({arcStyle:d,position:[0,0,-1]},h))),i.createElement("ambientLight",{intensity:.5}),i.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("./GizmoHelper.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var l=o(e),i=n(t);function c({color:e,rotation:t}){return i.createElement("group",{rotation:t},i.createElement("mesh",{position:[.4,0,0]},i.createElement("boxGeometry",{args:[.8,.05,.05]}),i.createElement("meshBasicMaterial",{color:e,toneMapped:!1})))}function s({onClick:e,font:t,disabled:a,arcStyle:o,label:n,labelColor:c,axisHeadScale:s=1,...u}){const f=i.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const a=e.getContext("2d");return a.beginPath(),a.arc(32,32,16,0,2*Math.PI),a.closePath(),a.fillStyle=o,a.fill(),n&&(a.font=t,a.textAlign="center",a.fillStyle=c,a.fillText(n,32,41)),new r.CanvasTexture(e)}),[o,n,c,t]),[d,m]=i.useState(!1),p=(n?1:.75)*(d?1.2:1)*s;return i.createElement("sprite",l.default({scale:p,onPointerOver:a?void 0:e=>{e.stopPropagation(),m(!0)},onPointerOut:a?void 0:e||(e=>{e.stopPropagation(),m(!1)})},u),i.createElement("spriteMaterial",{map:f,alphaTest:.3,opacity:n?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,hideAxisHeads:t,disabled:r,font:o="18px Inter var, Arial, sans-serif",axisColors:n=["#ff3653","#0adb50","#2c8fdf"],axisHeadScale:u=1,labels:f=["X","Y","Z"],labelColor:d="#000",onClick:m,...p})=>{const[b,E,h]=n,{tweenCamera:g,raycast:y}=a.useGizmoContext(),x={font:o,disabled:r,labelColor:d,raycast:y,onClick:m,axisHeadScale:u,onPointerDown:r?void 0:e=>{g(e.object.position),e.stopPropagation()}};return i.createElement("group",l.default({scale:40},p),i.createElement(c,{color:b,rotation:[0,0,0]}),i.createElement(c,{color:E,rotation:[0,0,Math.PI/2]}),i.createElement(c,{color:h,rotation:[0,-Math.PI/2,0]}),!t&&i.createElement(i.Fragment,null,i.createElement(s,l.default({arcStyle:b,position:[1,0,0],label:f[0]},x)),i.createElement(s,l.default({arcStyle:E,position:[0,1,0],label:f[1]},x)),i.createElement(s,l.default({arcStyle:h,position:[0,0,1],label:f[2]},x)),!e&&i.createElement(i.Fragment,null,i.createElement(s,l.default({arcStyle:b,position:[-1,0,0]},x)),i.createElement(s,l.default({arcStyle:E,position:[0,-1,0]},x)),i.createElement(s,l.default({arcStyle:h,position:[0,0,-1]},x)))),i.createElement("ambientLight",{intensity:.5}),i.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
@@ -2,11 +2,14 @@
2
2
  import { Event } from 'three';
3
3
  declare type GizmoViewportProps = JSX.IntrinsicElements['group'] & {
4
4
  axisColors?: [string, string, string];
5
+ labels?: [string, string, string];
6
+ axisHeadScale?: number;
5
7
  labelColor?: string;
6
8
  hideNegativeAxes?: boolean;
9
+ hideAxisHeads?: boolean;
7
10
  disabled?: boolean;
8
11
  font?: string;
9
12
  onClick?: (e: Event) => null;
10
13
  };
11
- export declare const GizmoViewport: ({ hideNegativeAxes, disabled, font, axisColors, labelColor, onClick, ...props }: GizmoViewportProps) => JSX.Element;
14
+ export declare const GizmoViewport: ({ hideNegativeAxes, hideAxisHeads, disabled, font, axisColors, axisHeadScale, labels, labelColor, onClick, ...props }: GizmoViewportProps) => JSX.Element;
12
15
  export {};
@@ -26,6 +26,7 @@ function AxisHead({
26
26
  arcStyle,
27
27
  label,
28
28
  labelColor,
29
+ axisHeadScale = 1,
29
30
  ...props
30
31
  }) {
31
32
  const texture = React.useMemo(() => {
@@ -49,7 +50,7 @@ function AxisHead({
49
50
  return new CanvasTexture(canvas);
50
51
  }, [arcStyle, label, labelColor, font]);
51
52
  const [active, setActive] = React.useState(false);
52
- const scale = (label ? 1 : 0.75) * (active ? 1.2 : 1);
53
+ const scale = (label ? 1 : 0.75) * (active ? 1.2 : 1) * axisHeadScale;
53
54
 
54
55
  const handlePointerOver = e => {
55
56
  e.stopPropagation();
@@ -75,9 +76,12 @@ function AxisHead({
75
76
 
76
77
  const GizmoViewport = ({
77
78
  hideNegativeAxes,
79
+ hideAxisHeads,
78
80
  disabled,
79
81
  font = '18px Inter var, Arial, sans-serif',
80
82
  axisColors = ['#ff3653', '#0adb50', '#2c8fdf'],
83
+ axisHeadScale = 1,
84
+ labels = ['X', 'Y', 'Z'],
81
85
  labelColor = '#000',
82
86
  onClick,
83
87
  ...props
@@ -93,6 +97,7 @@ const GizmoViewport = ({
93
97
  labelColor,
94
98
  raycast,
95
99
  onClick,
100
+ axisHeadScale,
96
101
  onPointerDown: !disabled ? e => {
97
102
  tweenCamera(e.object.position);
98
103
  e.stopPropagation();
@@ -109,18 +114,18 @@ const GizmoViewport = ({
109
114
  }), /*#__PURE__*/React.createElement(Axis, {
110
115
  color: colorZ,
111
116
  rotation: [0, -Math.PI / 2, 0]
112
- }), /*#__PURE__*/React.createElement(AxisHead, _extends({
117
+ }), !hideAxisHeads && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AxisHead, _extends({
113
118
  arcStyle: colorX,
114
119
  position: [1, 0, 0],
115
- label: "X"
120
+ label: labels[0]
116
121
  }, axisHeadProps)), /*#__PURE__*/React.createElement(AxisHead, _extends({
117
122
  arcStyle: colorY,
118
123
  position: [0, 1, 0],
119
- label: "Y"
124
+ label: labels[1]
120
125
  }, axisHeadProps)), /*#__PURE__*/React.createElement(AxisHead, _extends({
121
126
  arcStyle: colorZ,
122
127
  position: [0, 0, 1],
123
- label: "Z"
128
+ label: labels[2]
124
129
  }, axisHeadProps)), !hideNegativeAxes && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AxisHead, _extends({
125
130
  arcStyle: colorX,
126
131
  position: [-1, 0, 0]
@@ -130,7 +135,7 @@ const GizmoViewport = ({
130
135
  }, axisHeadProps)), /*#__PURE__*/React.createElement(AxisHead, _extends({
131
136
  arcStyle: colorZ,
132
137
  position: [0, 0, -1]
133
- }, axisHeadProps))), /*#__PURE__*/React.createElement("ambientLight", {
138
+ }, axisHeadProps)))), /*#__PURE__*/React.createElement("ambientLight", {
134
139
  intensity: 0.5
135
140
  }), /*#__PURE__*/React.createElement("pointLight", {
136
141
  position: [10, 10, 10],
@@ -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("../materials/SpotLightMaterial.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=o(e),l=i(t);const s=new r.Vector3,c=l.forwardRef((({depthBuffer:e,color:t="white",distance:o=5,angle:i=.15,attenuation:c=5,anglePower:f=5,...m},p)=>{const h=l.useRef(null),d=a.useThree((e=>e.size)),g=a.useThree((e=>e.camera)),v=a.useThree((e=>e.viewport.dpr)),[b]=l.useState((()=>new n.SpotLightMaterial));a.useFrame((()=>{b.uniforms.spotPosition.value.copy(h.current.getWorldPosition(s)),h.current.lookAt(h.current.parent.target.position)}));const w=l.useMemo((()=>{const e=new r.CylinderGeometry(.1,7*i,o,128,64,!0);return e.applyMatrix4((new r.Matrix4).makeTranslation(0,-o/2,0)),e.applyMatrix4((new r.Matrix4).makeRotationX(-Math.PI/2)),e}),[i,o]);return l.createElement("spotLight",u.default({ref:p,angle:i,color:t,distance:o},m),l.createElement("mesh",{ref:h,geometry:w},l.createElement("primitive",{object:b,attach:"material","uniforms-lightColor-value":t,"uniforms-attenuation-value":c,"uniforms-anglePower-value":f,"uniforms-depth-value":e,"uniforms-cameraNear-value":g.near,"uniforms-cameraFar-value":g.far,"uniforms-resolution-value":e?[d.width*v,d.height*v]:[0,0]})))}));exports.SpotLight=c;
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("../materials/SpotLightMaterial.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=o(e),l=i(t);const s=new r.Vector3,c=l.forwardRef((({depthBuffer:e,color:t="white",distance:o=5,angle:i=.15,attenuation:c=5,anglePower:f=5,...m},p)=>{const h=l.useRef(null),d=a.useThree((e=>e.size)),g=a.useThree((e=>e.camera)),v=a.useThree((e=>e.viewport.dpr)),[b]=l.useState((()=>new n.SpotLightMaterial));a.useFrame((()=>{b.uniforms.spotPosition.value.copy(h.current.getWorldPosition(s)),h.current.lookAt(h.current.parent.target.getWorldPosition(s))}));const w=l.useMemo((()=>{const e=new r.CylinderGeometry(.1,7*i,o,128,64,!0);return e.applyMatrix4((new r.Matrix4).makeTranslation(0,-o/2,0)),e.applyMatrix4((new r.Matrix4).makeRotationX(-Math.PI/2)),e}),[i,o]);return l.createElement("spotLight",u.default({ref:p,angle:i,color:t,distance:o},m),l.createElement("mesh",{ref:h,geometry:w},l.createElement("primitive",{object:b,attach:"material","uniforms-lightColor-value":t,"uniforms-attenuation-value":c,"uniforms-anglePower-value":f,"uniforms-depth-value":e,"uniforms-cameraNear-value":g.near,"uniforms-cameraFar-value":g.far,"uniforms-resolution-value":e?[d.width*v,d.height*v]:[0,0]})))}));exports.SpotLight=c;
package/core/SpotLight.js CHANGED
@@ -21,7 +21,7 @@ const SpotLight = /*#__PURE__*/React.forwardRef(({
21
21
  const [material] = React.useState(() => new SpotLightMaterial());
22
22
  useFrame(() => {
23
23
  material.uniforms.spotPosition.value.copy(mesh.current.getWorldPosition(vec));
24
- mesh.current.lookAt(mesh.current.parent.target.position);
24
+ mesh.current.lookAt(mesh.current.parent.target.getWorldPosition(vec));
25
25
  });
26
26
  const geom = React.useMemo(() => {
27
27
  const geometry = new CylinderGeometry(0.1, angle * 7, distance, 128, 64, true);