UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

111 lines (104 loc) 3.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PointLightHelper = void 0; var _Mesh = require("../objects/Mesh.js"); var _MeshBasicMaterial = require("../materials/MeshBasicMaterial.js"); var _SphereGeometry = require("../geometries/SphereGeometry.js"); /** * This displays a helper object consisting of a spherical mesh for * visualizing an instance of {@link PointLight}. * * ```js * const pointLight = new THREE.PointLight( 0xff0000, 1, 100 ); * pointLight.position.set( 10, 10, 10 ); * scene.add( pointLight ); * * const sphereSize = 1; * const pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize ); * scene.add( pointLightHelper ); * ``` * * @augments Mesh */ class PointLightHelper extends _Mesh.Mesh { /** * Constructs a new point light helper. * * @param {PointLight} light - The light to be visualized. * @param {number} [sphereSize=1] - The size of the sphere helper. * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take * the color of the light. */ constructor(light, sphereSize, color) { const geometry = new _SphereGeometry.SphereGeometry(sphereSize, 4, 2); const material = new _MeshBasicMaterial.MeshBasicMaterial({ wireframe: true, fog: false, toneMapped: false }); super(geometry, material); /** * The light being visualized. * * @type {HemisphereLight} */ this.light = light; /** * The color parameter passed in the constructor. * If not set, the helper will take the color of the light. * * @type {number|Color|string} */ this.color = color; this.type = 'PointLightHelper'; this.matrix = this.light.matrixWorld; this.matrixAutoUpdate = false; this.update(); /* // TODO: delete this comment? const distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 ); const distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); const d = light.distance; if ( d === 0.0 ) { this.lightDistance.visible = false; } else { this.lightDistance.scale.set( d, d, d ); } this.add( this.lightDistance ); */ } /** * 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(); } /** * Updates the helper to match the position of the * light being visualized. */ update() { this.light.updateWorldMatrix(true, false); if (this.color !== undefined) { this.material.color.set(this.color); } else { this.material.color.copy(this.light.color); } /* const d = this.light.distance; if ( d === 0.0 ) { this.lightDistance.visible = false; } else { this.lightDistance.visible = true; this.lightDistance.scale.set( d, d, d ); } */ } } exports.PointLightHelper = PointLightHelper;