three-stdlib 2.35.0 → 2.35.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.
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => {
5
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
+ return value;
7
+ };
8
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
+ const THREE = require("three");
10
+ const _o = new THREE.Object3D();
11
+ const _v = new THREE.Vector3();
12
+ class RaycasterHelper extends THREE.Object3D {
13
+ constructor(raycaster, numberOfHitsToVisualize = 20) {
14
+ super();
15
+ __publicField(this, "raycaster");
16
+ __publicField(this, "hits");
17
+ __publicField(this, "origin");
18
+ __publicField(this, "near");
19
+ __publicField(this, "far");
20
+ __publicField(this, "nearToFar");
21
+ __publicField(this, "originToNear");
22
+ __publicField(this, "hitPoints");
23
+ __publicField(this, "colors", {
24
+ near: 16777215,
25
+ far: 16777215,
26
+ originToNear: 3355443,
27
+ nearToFar: 16777215,
28
+ origin: [978050, 16711771]
29
+ });
30
+ __publicField(this, "setColors", (colors) => {
31
+ const _colors = {
32
+ ...this.colors,
33
+ ...colors
34
+ };
35
+ this.near.material.color.set(_colors.near);
36
+ this.far.material.color.set(_colors.far);
37
+ this.nearToFar.material.color.set(_colors.nearToFar);
38
+ this.originToNear.material.color.set(_colors.originToNear);
39
+ });
40
+ __publicField(this, "update", () => {
41
+ var _a;
42
+ const origin = this.raycaster.ray.origin;
43
+ const direction = this.raycaster.ray.direction;
44
+ this.origin.position.copy(origin);
45
+ this.near.position.copy(origin).add(direction.clone().multiplyScalar(this.raycaster.near));
46
+ this.far.position.copy(origin).add(direction.clone().multiplyScalar(this.raycaster.far));
47
+ this.far.lookAt(origin);
48
+ this.near.lookAt(origin);
49
+ let pos = this.nearToFar.geometry.getAttribute("position");
50
+ pos.set([...this.near.position.toArray(), ...this.far.position.toArray()]);
51
+ pos.needsUpdate = true;
52
+ pos = this.originToNear.geometry.getAttribute("position");
53
+ pos.set([...origin.toArray(), ...this.near.position.toArray()]);
54
+ pos.needsUpdate = true;
55
+ for (let i = 0; i < this.numberOfHitsToVisualize; i++) {
56
+ const hit = (_a = this.hits) == null ? void 0 : _a[i];
57
+ if (hit) {
58
+ const { point } = hit;
59
+ _o.position.copy(point);
60
+ _o.scale.setScalar(1);
61
+ } else {
62
+ _o.scale.setScalar(0);
63
+ }
64
+ _o.updateMatrix();
65
+ this.hitPoints.setMatrixAt(i, _o.matrix);
66
+ }
67
+ this.hitPoints.instanceMatrix.needsUpdate = true;
68
+ this.origin.material.color.set(this.hits.length > 0 ? this.colors.origin[0] : this.colors.origin[1]);
69
+ });
70
+ __publicField(this, "dispose", () => {
71
+ this.origin.geometry.dispose();
72
+ this.origin.material.dispose();
73
+ this.near.geometry.dispose();
74
+ this.near.material.dispose();
75
+ this.far.geometry.dispose();
76
+ this.far.material.dispose();
77
+ this.nearToFar.geometry.dispose();
78
+ this.nearToFar.material.dispose();
79
+ this.originToNear.geometry.dispose();
80
+ this.originToNear.material.dispose();
81
+ this.hitPoints.dispose();
82
+ });
83
+ this.numberOfHitsToVisualize = numberOfHitsToVisualize;
84
+ this.raycaster = raycaster;
85
+ this.hits = [];
86
+ this.origin = new THREE.Mesh(new THREE.SphereGeometry(0.04, 32), new THREE.MeshBasicMaterial());
87
+ this.origin.name = "RaycasterHelper_origin";
88
+ this.origin.raycast = () => null;
89
+ const size = 0.1;
90
+ let geometry = new THREE.BufferGeometry();
91
+ geometry.setAttribute("position", new THREE.Float32BufferAttribute([
92
+ -size,
93
+ size,
94
+ 0,
95
+ size,
96
+ size,
97
+ 0,
98
+ size,
99
+ -size,
100
+ 0,
101
+ -size,
102
+ -size,
103
+ 0,
104
+ -size,
105
+ size,
106
+ 0
107
+ ], 3));
108
+ this.near = new THREE.Line(geometry, new THREE.LineBasicMaterial());
109
+ this.near.name = "RaycasterHelper_near";
110
+ this.near.raycast = () => null;
111
+ this.far = new THREE.Line(geometry, new THREE.LineBasicMaterial());
112
+ this.far.name = "RaycasterHelper_far";
113
+ this.far.raycast = () => null;
114
+ this.nearToFar = new THREE.Line(new THREE.BufferGeometry(), new THREE.LineBasicMaterial());
115
+ this.nearToFar.name = "RaycasterHelper_nearToFar";
116
+ this.nearToFar.raycast = () => null;
117
+ this.nearToFar.geometry.setFromPoints([_v, _v]);
118
+ this.originToNear = new THREE.Line(this.nearToFar.geometry.clone(), new THREE.LineBasicMaterial());
119
+ this.originToNear.name = "RaycasterHelper_originToNear";
120
+ this.originToNear.raycast = () => null;
121
+ this.hitPoints = new THREE.InstancedMesh(new THREE.SphereGeometry(0.04), new THREE.MeshBasicMaterial(), this.numberOfHitsToVisualize);
122
+ this.hitPoints.name = "RaycasterHelper_hits";
123
+ this.hitPoints.raycast = () => null;
124
+ this.add(this.nearToFar);
125
+ this.add(this.originToNear);
126
+ this.add(this.near);
127
+ this.add(this.far);
128
+ this.add(this.origin);
129
+ this.add(this.hitPoints);
130
+ this.setColors();
131
+ }
132
+ }
133
+ exports.RaycasterHelper = RaycasterHelper;
134
+ //# sourceMappingURL=RaycasterHelper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaycasterHelper.cjs","sources":["../../src/helpers/RaycasterHelper.ts"],"sourcesContent":["/**\n * from https://github.com/gsimone/things/tree/main/packages/three-raycaster-helper\n */\n\nimport {\n BufferAttribute,\n BufferGeometry,\n Float32BufferAttribute,\n InstancedMesh,\n Intersection,\n Line,\n LineBasicMaterial,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n Raycaster,\n SphereGeometry,\n Vector3,\n} from 'three'\n\nconst _o = new Object3D()\nconst _v = new Vector3()\n\nclass RaycasterHelper extends Object3D {\n raycaster: Raycaster\n hits: Intersection[]\n\n origin: Mesh<SphereGeometry, MeshBasicMaterial>\n near: Line<BufferGeometry, LineBasicMaterial>\n far: Line<BufferGeometry, LineBasicMaterial>\n\n nearToFar: Line<BufferGeometry, LineBasicMaterial>\n originToNear: Line<BufferGeometry, LineBasicMaterial>\n\n hitPoints: InstancedMesh\n\n colors = {\n near: 0xffffff,\n far: 0xffffff,\n originToNear: 0x333333,\n nearToFar: 0xffffff,\n origin: [0x0eec82, 0xff005b],\n }\n\n constructor(raycaster: Raycaster, public numberOfHitsToVisualize = 20) {\n super()\n this.raycaster = raycaster\n\n this.hits = []\n\n this.origin = new Mesh(new SphereGeometry(0.04, 32), new MeshBasicMaterial())\n this.origin.name = 'RaycasterHelper_origin'\n this.origin.raycast = () => null\n\n const size = 0.1\n let geometry = new BufferGeometry()\n // prettier-ignore\n geometry.setAttribute( 'position', new Float32BufferAttribute( [\n - size, size, 0,\n size, size, 0,\n size, - size, 0,\n - size, - size, 0,\n - size, size, 0\n ], 3 ) );\n\n this.near = new Line(geometry, new LineBasicMaterial())\n this.near.name = 'RaycasterHelper_near'\n this.near.raycast = () => null\n\n this.far = new Line(geometry, new LineBasicMaterial())\n this.far.name = 'RaycasterHelper_far'\n this.far.raycast = () => null\n\n this.nearToFar = new Line(new BufferGeometry(), new LineBasicMaterial())\n this.nearToFar.name = 'RaycasterHelper_nearToFar'\n this.nearToFar.raycast = () => null\n\n this.nearToFar.geometry.setFromPoints([_v, _v])\n\n this.originToNear = new Line(this.nearToFar.geometry.clone(), new LineBasicMaterial())\n this.originToNear.name = 'RaycasterHelper_originToNear'\n this.originToNear.raycast = () => null\n\n this.hitPoints = new InstancedMesh(new SphereGeometry(0.04), new MeshBasicMaterial(), this.numberOfHitsToVisualize)\n this.hitPoints.name = 'RaycasterHelper_hits'\n this.hitPoints.raycast = () => null\n\n this.add(this.nearToFar)\n this.add(this.originToNear)\n\n this.add(this.near)\n this.add(this.far)\n\n this.add(this.origin)\n this.add(this.hitPoints)\n\n this.setColors()\n }\n\n setColors = (colors?: Partial<typeof this.colors>) => {\n const _colors = {\n ...this.colors,\n ...colors,\n }\n\n this.near.material.color.set(_colors.near)\n this.far.material.color.set(_colors.far)\n this.nearToFar.material.color.set(_colors.nearToFar)\n this.originToNear.material.color.set(_colors.originToNear)\n }\n\n update = () => {\n const origin = this.raycaster.ray.origin\n const direction = this.raycaster.ray.direction\n\n this.origin.position.copy(origin)\n\n this.near.position.copy(origin).add(direction.clone().multiplyScalar(this.raycaster.near))\n\n this.far.position.copy(origin).add(direction.clone().multiplyScalar(this.raycaster.far))\n\n this.far.lookAt(origin)\n this.near.lookAt(origin)\n\n let pos = this.nearToFar.geometry.getAttribute('position') as BufferAttribute\n pos.set([...this.near.position.toArray(), ...this.far.position.toArray()])\n pos.needsUpdate = true\n\n pos = this.originToNear.geometry.getAttribute('position') as BufferAttribute\n pos.set([...origin.toArray(), ...this.near.position.toArray()])\n pos.needsUpdate = true\n\n /**\n * Update hit points visualization\n */\n for (let i = 0; i < this.numberOfHitsToVisualize; i++) {\n const hit = this.hits?.[i]\n\n if (hit) {\n const { point } = hit\n _o.position.copy(point)\n _o.scale.setScalar(1)\n } else {\n _o.scale.setScalar(0)\n }\n\n _o.updateMatrix()\n\n this.hitPoints.setMatrixAt(i, _o.matrix)\n }\n\n this.hitPoints.instanceMatrix.needsUpdate = true\n\n /**\n * Update the color of the origin based on wether there are hits.\n */\n this.origin.material.color.set(this.hits.length > 0 ? this.colors.origin[0] : this.colors.origin[1])\n }\n\n dispose = () => {\n this.origin.geometry.dispose()\n this.origin.material.dispose()\n this.near.geometry.dispose()\n this.near.material.dispose()\n this.far.geometry.dispose()\n this.far.material.dispose()\n this.nearToFar.geometry.dispose()\n this.nearToFar.material.dispose()\n this.originToNear.geometry.dispose()\n this.originToNear.material.dispose()\n this.hitPoints.dispose()\n }\n}\n\nexport { RaycasterHelper }\n"],"names":["Object3D","Vector3","Mesh","SphereGeometry","MeshBasicMaterial","BufferGeometry","Float32BufferAttribute","Line","LineBasicMaterial","InstancedMesh"],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import { Object3D, Vector3, Mesh, SphereGeometry, MeshBasicMaterial, BufferGeometry, Float32BufferAttribute, Line, LineBasicMaterial, InstancedMesh } from "three";
8
+ const _o = new Object3D();
9
+ const _v = new Vector3();
10
+ class RaycasterHelper extends Object3D {
11
+ constructor(raycaster, numberOfHitsToVisualize = 20) {
12
+ super();
13
+ __publicField(this, "raycaster");
14
+ __publicField(this, "hits");
15
+ __publicField(this, "origin");
16
+ __publicField(this, "near");
17
+ __publicField(this, "far");
18
+ __publicField(this, "nearToFar");
19
+ __publicField(this, "originToNear");
20
+ __publicField(this, "hitPoints");
21
+ __publicField(this, "colors", {
22
+ near: 16777215,
23
+ far: 16777215,
24
+ originToNear: 3355443,
25
+ nearToFar: 16777215,
26
+ origin: [978050, 16711771]
27
+ });
28
+ __publicField(this, "setColors", (colors) => {
29
+ const _colors = {
30
+ ...this.colors,
31
+ ...colors
32
+ };
33
+ this.near.material.color.set(_colors.near);
34
+ this.far.material.color.set(_colors.far);
35
+ this.nearToFar.material.color.set(_colors.nearToFar);
36
+ this.originToNear.material.color.set(_colors.originToNear);
37
+ });
38
+ __publicField(this, "update", () => {
39
+ var _a;
40
+ const origin = this.raycaster.ray.origin;
41
+ const direction = this.raycaster.ray.direction;
42
+ this.origin.position.copy(origin);
43
+ this.near.position.copy(origin).add(direction.clone().multiplyScalar(this.raycaster.near));
44
+ this.far.position.copy(origin).add(direction.clone().multiplyScalar(this.raycaster.far));
45
+ this.far.lookAt(origin);
46
+ this.near.lookAt(origin);
47
+ let pos = this.nearToFar.geometry.getAttribute("position");
48
+ pos.set([...this.near.position.toArray(), ...this.far.position.toArray()]);
49
+ pos.needsUpdate = true;
50
+ pos = this.originToNear.geometry.getAttribute("position");
51
+ pos.set([...origin.toArray(), ...this.near.position.toArray()]);
52
+ pos.needsUpdate = true;
53
+ for (let i = 0; i < this.numberOfHitsToVisualize; i++) {
54
+ const hit = (_a = this.hits) == null ? void 0 : _a[i];
55
+ if (hit) {
56
+ const { point } = hit;
57
+ _o.position.copy(point);
58
+ _o.scale.setScalar(1);
59
+ } else {
60
+ _o.scale.setScalar(0);
61
+ }
62
+ _o.updateMatrix();
63
+ this.hitPoints.setMatrixAt(i, _o.matrix);
64
+ }
65
+ this.hitPoints.instanceMatrix.needsUpdate = true;
66
+ this.origin.material.color.set(this.hits.length > 0 ? this.colors.origin[0] : this.colors.origin[1]);
67
+ });
68
+ __publicField(this, "dispose", () => {
69
+ this.origin.geometry.dispose();
70
+ this.origin.material.dispose();
71
+ this.near.geometry.dispose();
72
+ this.near.material.dispose();
73
+ this.far.geometry.dispose();
74
+ this.far.material.dispose();
75
+ this.nearToFar.geometry.dispose();
76
+ this.nearToFar.material.dispose();
77
+ this.originToNear.geometry.dispose();
78
+ this.originToNear.material.dispose();
79
+ this.hitPoints.dispose();
80
+ });
81
+ this.numberOfHitsToVisualize = numberOfHitsToVisualize;
82
+ this.raycaster = raycaster;
83
+ this.hits = [];
84
+ this.origin = new Mesh(new SphereGeometry(0.04, 32), new MeshBasicMaterial());
85
+ this.origin.name = "RaycasterHelper_origin";
86
+ this.origin.raycast = () => null;
87
+ const size = 0.1;
88
+ let geometry = new BufferGeometry();
89
+ geometry.setAttribute("position", new Float32BufferAttribute([
90
+ -size,
91
+ size,
92
+ 0,
93
+ size,
94
+ size,
95
+ 0,
96
+ size,
97
+ -size,
98
+ 0,
99
+ -size,
100
+ -size,
101
+ 0,
102
+ -size,
103
+ size,
104
+ 0
105
+ ], 3));
106
+ this.near = new Line(geometry, new LineBasicMaterial());
107
+ this.near.name = "RaycasterHelper_near";
108
+ this.near.raycast = () => null;
109
+ this.far = new Line(geometry, new LineBasicMaterial());
110
+ this.far.name = "RaycasterHelper_far";
111
+ this.far.raycast = () => null;
112
+ this.nearToFar = new Line(new BufferGeometry(), new LineBasicMaterial());
113
+ this.nearToFar.name = "RaycasterHelper_nearToFar";
114
+ this.nearToFar.raycast = () => null;
115
+ this.nearToFar.geometry.setFromPoints([_v, _v]);
116
+ this.originToNear = new Line(this.nearToFar.geometry.clone(), new LineBasicMaterial());
117
+ this.originToNear.name = "RaycasterHelper_originToNear";
118
+ this.originToNear.raycast = () => null;
119
+ this.hitPoints = new InstancedMesh(new SphereGeometry(0.04), new MeshBasicMaterial(), this.numberOfHitsToVisualize);
120
+ this.hitPoints.name = "RaycasterHelper_hits";
121
+ this.hitPoints.raycast = () => null;
122
+ this.add(this.nearToFar);
123
+ this.add(this.originToNear);
124
+ this.add(this.near);
125
+ this.add(this.far);
126
+ this.add(this.origin);
127
+ this.add(this.hitPoints);
128
+ this.setColors();
129
+ }
130
+ }
131
+ export {
132
+ RaycasterHelper
133
+ };
134
+ //# sourceMappingURL=RaycasterHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaycasterHelper.js","sources":["../../src/helpers/RaycasterHelper.ts"],"sourcesContent":["/**\n * from https://github.com/gsimone/things/tree/main/packages/three-raycaster-helper\n */\n\nimport {\n BufferAttribute,\n BufferGeometry,\n Float32BufferAttribute,\n InstancedMesh,\n Intersection,\n Line,\n LineBasicMaterial,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n Raycaster,\n SphereGeometry,\n Vector3,\n} from 'three'\n\nconst _o = new Object3D()\nconst _v = new Vector3()\n\nclass RaycasterHelper extends Object3D {\n raycaster: Raycaster\n hits: Intersection[]\n\n origin: Mesh<SphereGeometry, MeshBasicMaterial>\n near: Line<BufferGeometry, LineBasicMaterial>\n far: Line<BufferGeometry, LineBasicMaterial>\n\n nearToFar: Line<BufferGeometry, LineBasicMaterial>\n originToNear: Line<BufferGeometry, LineBasicMaterial>\n\n hitPoints: InstancedMesh\n\n colors = {\n near: 0xffffff,\n far: 0xffffff,\n originToNear: 0x333333,\n nearToFar: 0xffffff,\n origin: [0x0eec82, 0xff005b],\n }\n\n constructor(raycaster: Raycaster, public numberOfHitsToVisualize = 20) {\n super()\n this.raycaster = raycaster\n\n this.hits = []\n\n this.origin = new Mesh(new SphereGeometry(0.04, 32), new MeshBasicMaterial())\n this.origin.name = 'RaycasterHelper_origin'\n this.origin.raycast = () => null\n\n const size = 0.1\n let geometry = new BufferGeometry()\n // prettier-ignore\n geometry.setAttribute( 'position', new Float32BufferAttribute( [\n - size, size, 0,\n size, size, 0,\n size, - size, 0,\n - size, - size, 0,\n - size, size, 0\n ], 3 ) );\n\n this.near = new Line(geometry, new LineBasicMaterial())\n this.near.name = 'RaycasterHelper_near'\n this.near.raycast = () => null\n\n this.far = new Line(geometry, new LineBasicMaterial())\n this.far.name = 'RaycasterHelper_far'\n this.far.raycast = () => null\n\n this.nearToFar = new Line(new BufferGeometry(), new LineBasicMaterial())\n this.nearToFar.name = 'RaycasterHelper_nearToFar'\n this.nearToFar.raycast = () => null\n\n this.nearToFar.geometry.setFromPoints([_v, _v])\n\n this.originToNear = new Line(this.nearToFar.geometry.clone(), new LineBasicMaterial())\n this.originToNear.name = 'RaycasterHelper_originToNear'\n this.originToNear.raycast = () => null\n\n this.hitPoints = new InstancedMesh(new SphereGeometry(0.04), new MeshBasicMaterial(), this.numberOfHitsToVisualize)\n this.hitPoints.name = 'RaycasterHelper_hits'\n this.hitPoints.raycast = () => null\n\n this.add(this.nearToFar)\n this.add(this.originToNear)\n\n this.add(this.near)\n this.add(this.far)\n\n this.add(this.origin)\n this.add(this.hitPoints)\n\n this.setColors()\n }\n\n setColors = (colors?: Partial<typeof this.colors>) => {\n const _colors = {\n ...this.colors,\n ...colors,\n }\n\n this.near.material.color.set(_colors.near)\n this.far.material.color.set(_colors.far)\n this.nearToFar.material.color.set(_colors.nearToFar)\n this.originToNear.material.color.set(_colors.originToNear)\n }\n\n update = () => {\n const origin = this.raycaster.ray.origin\n const direction = this.raycaster.ray.direction\n\n this.origin.position.copy(origin)\n\n this.near.position.copy(origin).add(direction.clone().multiplyScalar(this.raycaster.near))\n\n this.far.position.copy(origin).add(direction.clone().multiplyScalar(this.raycaster.far))\n\n this.far.lookAt(origin)\n this.near.lookAt(origin)\n\n let pos = this.nearToFar.geometry.getAttribute('position') as BufferAttribute\n pos.set([...this.near.position.toArray(), ...this.far.position.toArray()])\n pos.needsUpdate = true\n\n pos = this.originToNear.geometry.getAttribute('position') as BufferAttribute\n pos.set([...origin.toArray(), ...this.near.position.toArray()])\n pos.needsUpdate = true\n\n /**\n * Update hit points visualization\n */\n for (let i = 0; i < this.numberOfHitsToVisualize; i++) {\n const hit = this.hits?.[i]\n\n if (hit) {\n const { point } = hit\n _o.position.copy(point)\n _o.scale.setScalar(1)\n } else {\n _o.scale.setScalar(0)\n }\n\n _o.updateMatrix()\n\n this.hitPoints.setMatrixAt(i, _o.matrix)\n }\n\n this.hitPoints.instanceMatrix.needsUpdate = true\n\n /**\n * Update the color of the origin based on wether there are hits.\n */\n this.origin.material.color.set(this.hits.length > 0 ? this.colors.origin[0] : this.colors.origin[1])\n }\n\n dispose = () => {\n this.origin.geometry.dispose()\n this.origin.material.dispose()\n this.near.geometry.dispose()\n this.near.material.dispose()\n this.far.geometry.dispose()\n this.far.material.dispose()\n this.nearToFar.geometry.dispose()\n this.nearToFar.material.dispose()\n this.originToNear.geometry.dispose()\n this.originToNear.material.dispose()\n this.hitPoints.dispose()\n }\n}\n\nexport { RaycasterHelper }\n"],"names":[],"mappings":"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"}
package/index.cjs CHANGED
@@ -247,6 +247,7 @@ const Line2 = require("./lines/Line2.cjs");
247
247
  const LineMaterial = require("./lines/LineMaterial.cjs");
248
248
  const LineSegments2 = require("./lines/LineSegments2.cjs");
249
249
  const LightProbeHelper = require("./helpers/LightProbeHelper.cjs");
250
+ const RaycasterHelper = require("./helpers/RaycasterHelper.cjs");
250
251
  const VertexTangentsHelper = require("./helpers/VertexTangentsHelper.cjs");
251
252
  const PositionalAudioHelper = require("./helpers/PositionalAudioHelper.cjs");
252
253
  const VertexNormalsHelper = require("./helpers/VertexNormalsHelper.cjs");
@@ -574,6 +575,7 @@ exports.Line2 = Line2.Line2;
574
575
  exports.LineMaterial = LineMaterial.LineMaterial;
575
576
  exports.LineSegments2 = LineSegments2.LineSegments2;
576
577
  exports.LightProbeHelper = LightProbeHelper.LightProbeHelper;
578
+ exports.RaycasterHelper = RaycasterHelper.RaycasterHelper;
577
579
  exports.VertexTangentsHelper = VertexTangentsHelper.VertexTangentsHelper;
578
580
  exports.PositionalAudioHelper = PositionalAudioHelper.PositionalAudioHelper;
579
581
  exports.VertexNormalsHelper = VertexNormalsHelper.VertexNormalsHelper;
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/index.d.ts CHANGED
@@ -246,6 +246,7 @@ export * from './lines/Line2';
246
246
  export * from './lines/LineMaterial';
247
247
  export * from './lines/LineSegments2';
248
248
  export * from './helpers/LightProbeHelper';
249
+ export * from './helpers/RaycasterHelper';
249
250
  export * from './helpers/VertexTangentsHelper';
250
251
  export * from './helpers/PositionalAudioHelper';
251
252
  export * from './helpers/VertexNormalsHelper';
package/index.js CHANGED
@@ -245,6 +245,7 @@ import { Line2 } from "./lines/Line2.js";
245
245
  import { LineMaterial } from "./lines/LineMaterial.js";
246
246
  import { LineSegments2 } from "./lines/LineSegments2.js";
247
247
  import { LightProbeHelper } from "./helpers/LightProbeHelper.js";
248
+ import { RaycasterHelper } from "./helpers/RaycasterHelper.js";
248
249
  import { VertexTangentsHelper } from "./helpers/VertexTangentsHelper.js";
249
250
  import { PositionalAudioHelper } from "./helpers/PositionalAudioHelper.js";
250
251
  import { VertexNormalsHelper } from "./helpers/VertexNormalsHelper.js";
@@ -459,6 +460,7 @@ export {
459
460
  RGBELoader,
460
461
  RGBMLoader,
461
462
  RGBShiftShader,
463
+ RaycasterHelper,
462
464
  RectAreaLightHelper,
463
465
  RectAreaLightUniformsLib,
464
466
  Reflector,
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-stdlib",
3
- "version": "2.35.0",
3
+ "version": "2.35.2",
4
4
  "description": "stand-alone library of threejs examples",
5
5
  "keywords": [
6
6
  "three",