Source: objects/Lensflare.js

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 }