@react-three/drei 9.62.2 → 9.62.3

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"),r=require("react"),t=require("three"),n=require("@react-three/fiber"),o=require("../materials/WireframeMaterial.cjs.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(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("./shaderMaterial.cjs.js");var u=i(e),f=a(r),s=a(t);function c(e){return void 0!==(null==e?void 0:e.current)}function l(e){const r=null!=(t=e)&&t.current?e.current:e;var t;if(function(e){return!(null==e||!e.isBufferGeometry)}(r))return r;{const e=r.parent;if(function(e){return!(null==e||!e.geometry)}(e))return e.geometry}}function m(e,r){if(e.index){console.warn("Wireframe: Requires non-indexed geometry, converting to non-indexed geometry.");const r=e.toNonIndexed();e.copy(r),e.setIndex(null)}const t=function(e,r){const t=e.getAttribute("position").count,n=[];for(let e=0;e<t;e++){const t=r?1:0;e%2==0?n.push(0,0,1,0,1,0,1,0,t):n.push(0,1,0,0,0,1,1,0,t)}return new s.BufferAttribute(Float32Array.from(n),3)}(e,r);e.setAttribute("barycentric",t)}function d({geometry:e,simplify:r=!1,...t}){const[n,o]=f.useState(null);f.useLayoutEffect((()=>{const t=l(e);if(!t)throw new Error("Wireframe: geometry prop must be a BufferGeometry or a ref to a BufferGeometry.");m(t,r),c(e)&&o(t)}),[r,e]);const i=c(e)?n:e;return f.createElement(f.Fragment,null,i&&f.createElement("mesh",{geometry:i},f.createElement("meshWireframeMaterial",u.default({attach:"material",transparent:!0,side:s.DoubleSide,polygonOffset:!0,polygonOffsetFactor:-4},t,{extensions:{derivatives:!0,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1}}))))}function y({simplify:e=!1,...r}){const t=f.useRef(null),n=f.useMemo((()=>function(){const e={};for(const r in o.WireframeMaterialShaders.uniforms)e[r]={value:o.WireframeMaterialShaders.uniforms[r]};return e}()),[o.WireframeMaterialShaders.uniforms]);return o.useWireframeUniforms(n,r),f.useLayoutEffect((()=>{const r=l(t);if(!r)throw new Error("Wireframe: Must be a child of a Mesh, Line or Points object or specify a geometry prop.");m(r,e)}),[e]),f.useLayoutEffect((()=>{const e=t.current.parent;o.setWireframeOverride(e.material,n)}),[]),f.createElement("object3D",{ref:t})}a(n).extend({MeshWireframeMaterial:o.WireframeMaterial}),exports.Wireframe=function({geometry:e,...r}){return e?f.createElement(d,u.default({geometry:e},r)):f.createElement(y,r)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),n=require("@react-three/fiber"),o=require("../materials/WireframeMaterial.cjs.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(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("./shaderMaterial.cjs.js");var u=i(e),f=a(r),s=a(t);function c(e){return void 0!==(null==e?void 0:e.current)}function l(e){return"WireframeGeometry"===e.type}function m(e){const r=null!=(t=e)&&t.current?e.current:e;var t;if(function(e){return!(null==e||!e.isBufferGeometry)}(r))return r;{if(l(r))throw new Error("Wireframe: WireframeGeometry is not supported.");const e=r.parent;if(function(e){return!(null==e||!e.geometry)}(e)){if(l(e.geometry))throw new Error("Wireframe: WireframeGeometry is not supported.");return e.geometry}}}function d(e,r){if(e.index){console.warn("Wireframe: Requires non-indexed geometry, converting to non-indexed geometry.");const r=e.toNonIndexed();e.copy(r),e.setIndex(null)}const t=function(e,r){const t=e.getAttribute("position").count,n=[];for(let e=0;e<t;e++){const t=r?1:0;e%2==0?n.push(0,0,1,0,1,0,1,0,t):n.push(0,1,0,0,0,1,1,0,t)}return new s.BufferAttribute(Float32Array.from(n),3)}(e,r);e.setAttribute("barycentric",t)}function y({geometry:e,simplify:r=!1,...t}){const[n,o]=f.useState(null);f.useLayoutEffect((()=>{const t=m(e);if(!t)throw new Error("Wireframe: geometry prop must be a BufferGeometry or a ref to a BufferGeometry.");d(t,r),c(e)&&o(t)}),[r,e]);const i=c(e)?n:e;return f.createElement(f.Fragment,null,i&&f.createElement("mesh",{geometry:i},f.createElement("meshWireframeMaterial",u.default({attach:"material",transparent:!0,side:s.DoubleSide,polygonOffset:!0,polygonOffsetFactor:-4},t,{extensions:{derivatives:!0,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1}}))))}function p({simplify:e=!1,...r}){const t=f.useRef(null),n=f.useMemo((()=>function(){const e={};for(const r in o.WireframeMaterialShaders.uniforms)e[r]={value:o.WireframeMaterialShaders.uniforms[r]};return e}()),[o.WireframeMaterialShaders.uniforms]);return o.useWireframeUniforms(n,r),f.useLayoutEffect((()=>{const r=m(t);if(!r)throw new Error("Wireframe: Must be a child of a Mesh, Line or Points object or specify a geometry prop.");const n=r.clone();return d(r,e),()=>{r.copy(n),n.dispose()}}),[e]),f.useLayoutEffect((()=>{const e=t.current.parent,r=e.material.clone();return o.setWireframeOverride(e.material,n),()=>{e.material.dispose(),e.material=r}}),[]),f.createElement("object3D",{ref:t})}a(n).extend({MeshWireframeMaterial:o.WireframeMaterial}),exports.Wireframe=function({geometry:e,...r}){return e?f.createElement(y,u.default({geometry:e},r)):f.createElement(p,r)};
package/core/Wireframe.js CHANGED
@@ -24,6 +24,10 @@ function isRef(object) {
24
24
  return (object == null ? void 0 : object.current) !== undefined;
25
25
  }
26
26
 
27
+ function isWireframeGeometry(geometry) {
28
+ return geometry.type === 'WireframeGeometry';
29
+ }
30
+
27
31
  function getUniforms() {
28
32
  const u = {};
29
33
 
@@ -59,9 +63,19 @@ function getInputGeometry(inputGeometry) {
59
63
  const geo = isRefObject(inputGeometry) ? inputGeometry.current : inputGeometry;
60
64
 
61
65
  if (!isGeometry(geo)) {
66
+ // Disallow WireframeGeometry
67
+ if (isWireframeGeometry(geo)) {
68
+ throw new Error('Wireframe: WireframeGeometry is not supported.');
69
+ }
70
+
62
71
  const parent = geo.parent;
63
72
 
64
73
  if (isWithGeometry(parent)) {
74
+ // Disallow WireframeGeometry
75
+ if (isWireframeGeometry(parent.geometry)) {
76
+ throw new Error('Wireframe: WireframeGeometry is not supported.');
77
+ }
78
+
65
79
  return parent.geometry;
66
80
  }
67
81
  } else {
@@ -134,11 +148,21 @@ function WireframeWithoutCustomGeo({
134
148
  throw new Error('Wireframe: Must be a child of a Mesh, Line or Points object or specify a geometry prop.');
135
149
  }
136
150
 
151
+ const og = geom.clone();
137
152
  setBarycentricCoordinates(geom, simplify);
153
+ return () => {
154
+ geom.copy(og);
155
+ og.dispose();
156
+ };
138
157
  }, [simplify]);
139
158
  React.useLayoutEffect(() => {
140
159
  const parentMesh = objectRef.current.parent;
160
+ const og = parentMesh.material.clone();
141
161
  setWireframeOverride(parentMesh.material, uniforms);
162
+ return () => {
163
+ parentMesh.material.dispose();
164
+ parentMesh.material = og;
165
+ };
142
166
  }, []);
143
167
  return /*#__PURE__*/React.createElement("object3D", {
144
168
  ref: objectRef