import { Object3D } from "./Object3D";
import { Utils } from '../common/Utils'
/**
* @class Lensflare
* The lensflare object.
* @memberof THING
* @extends THING.Object3D
* @public
*/
class Lensflare extends Object3D {
/**
* The lensflare object.
* @param {Object} param The initial parameters.
*/
constructor(param = {}) {
super(param);
}
onBeforeSetup(param) {
param['renderableNode'] = param['renderableNode'] || Utils.createObject('Lensflare');
super.onBeforeSetup(param);
}
/**
* Get/Set the occlusion scale of lensflare.
* @type {Number}
* @public
*/
get occlusionScale() {
return this.bodyNode.getOcclusionScale();
}
set occlusionScale(value) {
this.bodyNode.setOcclusionScale(value);
}
/**
* The lensflare element.
* @typedef {Object} LensflareElement
* @property {ImageTexture} imageTexture The element image texture resource.
* @property {Array<Number>} color The element color.
* @property {Number} scale The element scale.
* @property {Number} offset The element offset.
* @public
*/
/**
* Add element
* @param {LensflareElement} element The lensflare element.
* @public
*/
addElement(element) {
element.imageTexture = element.imageTexture.getTextureResource();
this.bodyNode.addElement(element)
}
/**
* Remove element by index.
* @param {Number} index The lensflare element at this index will be removed.
* @public
*/
removeElement(index) {
this.bodyNode.removeElement(index)
}
/**
* Clear the elements of lensflare.
* @public
*/
clearElements() {
this.bodyNode.clearElements()
}
/**
* Get all elements of lensflare.
* @returns {Array<LensflareElement>}
* @public
*/
getAllElements() {
return this.bodyNode.getAllElements()
}
get isLensflare() {
return true;
}
}
export { Lensflare }