UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

69 lines (66 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Box3Helper = void 0; var _LineSegments = require("../objects/LineSegments.js"); var _LineBasicMaterial = require("../materials/LineBasicMaterial.js"); var _BufferAttribute = require("../core/BufferAttribute.js"); var _BufferGeometry = require("../core/BufferGeometry.js"); /** * A helper object to visualize an instance of {@link Box3}. * * ```js * const box = new THREE.Box3(); * box.setFromCenterAndSize( new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 2, 1, 3 ) ); * * const helper = new THREE.Box3Helper( box, 0xffff00 ); * scene.add( helper ) * ``` * * @augments LineSegments */ class Box3Helper extends _LineSegments.LineSegments { /** * Constructs a new box3 helper. * * @param {Box3} box - The box to visualize. * @param {number|Color|string} [color=0xffff00] - The box's color. */ 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.BufferGeometry(); geometry.setIndex(new _BufferAttribute.BufferAttribute(indices, 1)); geometry.setAttribute('position', new _BufferAttribute.Float32BufferAttribute(positions, 3)); super(geometry, new _LineBasicMaterial.LineBasicMaterial({ color: color, toneMapped: false })); /** * The box being visualized. * * @type {Box3} */ 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); } /** * Frees the GPU-related resources allocated by this instance. Call this * method whenever this instance is no longer used in your app. */ dispose() { this.geometry.dispose(); this.material.dispose(); } } exports.Box3Helper = Box3Helper;