Spaces:
Running
Running
| import { LineSegments } from '../objects/LineSegments.js'; | |
| import { LineBasicMaterial } from '../materials/LineBasicMaterial.js'; | |
| import { BufferAttribute } from '../core/BufferAttribute.js'; | |
| import { Float32BufferAttribute } from '../core/BufferAttribute.js'; | |
| import { BufferGeometry } from '../core/BufferGeometry.js'; | |
| class Box3Helper extends LineSegments { | |
| constructor(box, color = 0xffff00) { | |
| const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]); | |
| const positions = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1]; | |
| const geometry = new BufferGeometry(); | |
| geometry.setIndex(new BufferAttribute(indices, 1)); | |
| geometry.setAttribute('position', new Float32BufferAttribute(positions, 3)); | |
| super(geometry, new LineBasicMaterial({ color: color, toneMapped: false })); | |
| this.box = box; | |
| this.type = 'Box3Helper'; | |
| this.geometry.computeBoundingSphere(); | |
| } | |
| updateMatrixWorld(force) { | |
| const box = this.box; | |
| if (box.isEmpty()) return; | |
| box.getCenter(this.position); | |
| box.getSize(this.scale); | |
| this.scale.multiplyScalar(0.5); | |
| super.updateMatrixWorld(force); | |
| } | |
| } | |
| export { Box3Helper }; | |