three-stdlib 2.35.0 → 2.35.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.1",
4
4
  "description": "stand-alone library of threejs examples",
5
5
  "keywords": [
6
6
  "three",