Buckets:
ktongue/docker_container / simsite /frontend /node_modules /three-stdlib /lines /LineSegmentsGeometry.js
| import { InstancedBufferGeometry, Float32BufferAttribute, InstancedInterleavedBuffer, InterleavedBufferAttribute, WireframeGeometry, Box3, Sphere, Vector3 } from "three"; | |
| const _box = /* @__PURE__ */ new Box3(); | |
| const _vector = /* @__PURE__ */ new Vector3(); | |
| class LineSegmentsGeometry extends InstancedBufferGeometry { | |
| constructor() { | |
| super(); | |
| this.isLineSegmentsGeometry = true; | |
| this.type = "LineSegmentsGeometry"; | |
| const positions = [-1, 2, 0, 1, 2, 0, -1, 1, 0, 1, 1, 0, -1, 0, 0, 1, 0, 0, -1, -1, 0, 1, -1, 0]; | |
| const uvs = [-1, 2, 1, 2, -1, 1, 1, 1, -1, -1, 1, -1, -1, -2, 1, -2]; | |
| const index = [0, 2, 1, 2, 3, 1, 2, 4, 3, 4, 5, 3, 4, 6, 5, 6, 7, 5]; | |
| this.setIndex(index); | |
| this.setAttribute("position", new Float32BufferAttribute(positions, 3)); | |
| this.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); | |
| } | |
| applyMatrix4(matrix) { | |
| const start = this.attributes.instanceStart; | |
| const end = this.attributes.instanceEnd; | |
| if (start !== void 0) { | |
| start.applyMatrix4(matrix); | |
| end.applyMatrix4(matrix); | |
| start.needsUpdate = true; | |
| } | |
| if (this.boundingBox !== null) { | |
| this.computeBoundingBox(); | |
| } | |
| if (this.boundingSphere !== null) { | |
| this.computeBoundingSphere(); | |
| } | |
| return this; | |
| } | |
| setPositions(array) { | |
| let lineSegments; | |
| if (array instanceof Float32Array) { | |
| lineSegments = array; | |
| } else if (Array.isArray(array)) { | |
| lineSegments = new Float32Array(array); | |
| } | |
| const instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1); | |
| this.setAttribute("instanceStart", new InterleavedBufferAttribute(instanceBuffer, 3, 0)); | |
| this.setAttribute("instanceEnd", new InterleavedBufferAttribute(instanceBuffer, 3, 3)); | |
| this.computeBoundingBox(); | |
| this.computeBoundingSphere(); | |
| return this; | |
| } | |
| setColors(array, itemSize = 3) { | |
| let colors; | |
| if (array instanceof Float32Array) { | |
| colors = array; | |
| } else if (Array.isArray(array)) { | |
| colors = new Float32Array(array); | |
| } | |
| const instanceColorBuffer = new InstancedInterleavedBuffer(colors, itemSize * 2, 1); | |
| this.setAttribute("instanceColorStart", new InterleavedBufferAttribute(instanceColorBuffer, itemSize, 0)); | |
| this.setAttribute("instanceColorEnd", new InterleavedBufferAttribute(instanceColorBuffer, itemSize, itemSize)); | |
| return this; | |
| } | |
| fromWireframeGeometry(geometry) { | |
| this.setPositions(geometry.attributes.position.array); | |
| return this; | |
| } | |
| fromEdgesGeometry(geometry) { | |
| this.setPositions(geometry.attributes.position.array); | |
| return this; | |
| } | |
| fromMesh(mesh) { | |
| this.fromWireframeGeometry(new WireframeGeometry(mesh.geometry)); | |
| return this; | |
| } | |
| fromLineSegments(lineSegments) { | |
| const geometry = lineSegments.geometry; | |
| this.setPositions(geometry.attributes.position.array); | |
| return this; | |
| } | |
| computeBoundingBox() { | |
| if (this.boundingBox === null) { | |
| this.boundingBox = new Box3(); | |
| } | |
| const start = this.attributes.instanceStart; | |
| const end = this.attributes.instanceEnd; | |
| if (start !== void 0 && end !== void 0) { | |
| this.boundingBox.setFromBufferAttribute(start); | |
| _box.setFromBufferAttribute(end); | |
| this.boundingBox.union(_box); | |
| } | |
| } | |
| computeBoundingSphere() { | |
| if (this.boundingSphere === null) { | |
| this.boundingSphere = new Sphere(); | |
| } | |
| if (this.boundingBox === null) { | |
| this.computeBoundingBox(); | |
| } | |
| const start = this.attributes.instanceStart; | |
| const end = this.attributes.instanceEnd; | |
| if (start !== void 0 && end !== void 0) { | |
| const center = this.boundingSphere.center; | |
| this.boundingBox.getCenter(center); | |
| let maxRadiusSq = 0; | |
| for (let i = 0, il = start.count; i < il; i++) { | |
| _vector.fromBufferAttribute(start, i); | |
| maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector)); | |
| _vector.fromBufferAttribute(end, i); | |
| maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector)); | |
| } | |
| this.boundingSphere.radius = Math.sqrt(maxRadiusSq); | |
| if (isNaN(this.boundingSphere.radius)) { | |
| console.error( | |
| "THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.", | |
| this | |
| ); | |
| } | |
| } | |
| } | |
| toJSON() { | |
| } | |
| applyMatrix(matrix) { | |
| console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."); | |
| return this.applyMatrix4(matrix); | |
| } | |
| } | |
| export { | |
| LineSegmentsGeometry | |
| }; | |
| //# sourceMappingURL=LineSegmentsGeometry.js.map | |
Xet Storage Details
- Size:
- 4.61 kB
- Xet hash:
- 14deae9112eb1b4ff790630592897dec0511809947678f689e1f3a882f06d4ac
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.