import { Utils } from '../common/Utils';
import { BaseLight } from './BaseLight';
/**
* @class HemisphereLight
* The hemisphere light object.
* @memberof THING
* @extends THING.BaseLight
* @public
*/
class HemisphereLight extends BaseLight {
/**
* THe hemisphere light object in scene.
* @param {Object} param The initial parameters.
*/
constructor(param = {}) {
super(param);
}
onCopy(object) {
super.onCopy(object);
this.groundColor = object.groundColor;
}
onBeforeSetup(param) {
param['renderableNode'] = param['renderableNode'] || Utils.createObject('HemisphereLight');
super.onBeforeSetup(param);
}
onSetupComplete(param) {
super.onSetupComplete(param);
// Sync options
Utils.syncOptions(this, [
'groundColor',
], param, param['extras'] || param['external']);
}
onExportExternalData() {
let external = Object.assign({}, super.onExportExternalData());
Utils.setAttributeIfExist(external, 'groundColor', this);;
return external;
}
// #region Accessor
/**
* Get/Set ground color.
* @type {Number|String|Array<Number>}
* @public
*/
get groundColor() {
let color = [0, 0, 0];
this.bodyNode.getGroundColor(color);
return Utils.colorToHexString(color);
}
set groundColor(value) {
let color = Utils.parseColor(value);
this.bodyNode.setGroundColor(color);
}
// #endregion
/**
* Check whether it's HemisphereLight type or inherit from it.
* @type {Boolean}
*/
get isHemisphereLight() {
return true;
}
}
export { HemisphereLight }