Spaces:
Running
Running
| import { Light } from './Light.js'; | |
| class RectAreaLight extends Light { | |
| constructor(color, intensity, width = 10, height = 10) { | |
| super(color, intensity); | |
| this.type = 'RectAreaLight'; | |
| this.width = width; | |
| this.height = height; | |
| } | |
| get power() { | |
| // compute the light's luminous power (in lumens) from its intensity (in nits) | |
| return this.intensity * this.width * this.height * Math.PI; | |
| } | |
| set power(power) { | |
| // set the light's intensity (in nits) from the desired luminous power (in lumens) | |
| this.intensity = power / (this.width * this.height * Math.PI); | |
| } | |
| copy(source) { | |
| super.copy(source); | |
| this.width = source.width; | |
| this.height = source.height; | |
| return this; | |
| } | |
| toJSON(meta) { | |
| const data = super.toJSON(meta); | |
| data.object.width = this.width; | |
| data.object.height = this.height; | |
| return data; | |
| } | |
| } | |
| RectAreaLight.prototype.isRectAreaLight = true; | |
| export { RectAreaLight }; | |