three-stdlib 2.23.9 → 2.23.11

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.
@@ -1304,7 +1304,7 @@ class GLTFParser {
1304
1304
  let isSafari = false;
1305
1305
  let isFirefox = false;
1306
1306
  let firefoxVersion = -1;
1307
- if (typeof navigator !== "undefined") {
1307
+ if (typeof navigator !== "undefined" && typeof navigator.userAgent !== "undefined") {
1308
1308
  isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) === true;
1309
1309
  isFirefox = navigator.userAgent.indexOf("Firefox") > -1;
1310
1310
  firefoxVersion = isFirefox ? navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1] : -1;
@@ -1302,7 +1302,7 @@ class GLTFParser {
1302
1302
  let isSafari = false;
1303
1303
  let isFirefox = false;
1304
1304
  let firefoxVersion = -1;
1305
- if (typeof navigator !== "undefined") {
1305
+ if (typeof navigator !== "undefined" && typeof navigator.userAgent !== "undefined") {
1306
1306
  isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) === true;
1307
1307
  isFirefox = navigator.userAgent.indexOf("Firefox") > -1;
1308
1308
  firefoxVersion = isFirefox ? navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1] : -1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-stdlib",
3
- "version": "2.23.9",
3
+ "version": "2.23.11",
4
4
  "description": "stand-alone library of threejs examples",
5
5
  "keywords": [
6
6
  "three",
@@ -578,7 +578,7 @@ function toCreasedNormals(geometry, creaseAngle = Math.PI / 3) {
578
578
  const z = ~~(v.z * hashMultiplier);
579
579
  return `${x},${y},${z}`;
580
580
  }
581
- const resultGeometry = geometry.toNonIndexed();
581
+ const resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry;
582
582
  const posAttr = resultGeometry.attributes.position;
583
583
  const vertexMap = {};
584
584
  for (let i = 0, l = posAttr.count / 3; i < l; i++) {
@@ -45,4 +45,19 @@ export type ComputedMorphedAttribute = {
45
45
  morphedNormalAttribute: Float32BufferAttribute;
46
46
  };
47
47
  export declare function computeMorphedAttributes(object: Mesh | Line | Points): ComputedMorphedAttribute | null;
48
+ /**
49
+ * Modifies the supplied geometry if it is non-indexed, otherwise creates a new,
50
+ * non-indexed geometry. Returns the geometry with smooth normals everywhere except
51
+ * faces that meet at an angle greater than the crease angle.
52
+ *
53
+ * Backwards compatible with code such as @react-three/drei's `<RoundedBox>`
54
+ * which uses this method to operate on the original geometry.
55
+ *
56
+ * As of this writing, BufferGeometry.toNonIndexed() warns if the geometry is
57
+ * non-indexed and returns `this`, i.e. the same geometry on which it was called:
58
+ * `BufferGeometry is already non-indexed.`
59
+ *
60
+ * @param geometry
61
+ * @param creaseAngle
62
+ */
48
63
  export declare function toCreasedNormals(geometry: BufferGeometry, creaseAngle?: number): BufferGeometry;
@@ -576,7 +576,7 @@ function toCreasedNormals(geometry, creaseAngle = Math.PI / 3) {
576
576
  const z = ~~(v.z * hashMultiplier);
577
577
  return `${x},${y},${z}`;
578
578
  }
579
- const resultGeometry = geometry.toNonIndexed();
579
+ const resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry;
580
580
  const posAttr = resultGeometry.attributes.position;
581
581
  const vertexMap = {};
582
582
  for (let i = 0, l = posAttr.count / 3; i < l; i++) {