import { Utils } from '../common/Utils';
import { BasePlanePoints } from './BasePlanePoints';
let _originalQuat = [0, 0, 0, 1];
/**
* @class PlaneRegion
* The plane region object.
* @memberof THING
* @extends THING.BasePlanePoints
* @public
*/
class PlaneRegion extends BasePlanePoints {
static defaultTagArray = ['Region'];
/**
* The plane region with points in scene.
* @param {Object} param The initial parameters.
*/
constructor(param = {}) {
super(param);
this._syncOptions(param);
}
// #region Private
_syncOptions(param) {
let bodyNode = this.bodyNode;
bodyNode.begin();
{
super.onSyncOptions(param);
}
bodyNode.end();
}
// #endregion
// #region Overrides
onBeforeSetup(param) {
if (!param['renderableNode']) {
param['renderableNode'] = Utils.createObject('ExtrudeShape');
// Use as horz-flat plane shape(Y-axis is up)
param['renderableNode'].setQuaternion(_originalQuat);
}
super.onBeforeSetup(param);
}
onCreateBodyNode() {
let shape = Utils.createObject('ExtrudeShape');
if (!shape) {
return null;
}
// We will show region as very very thin plane
shape.setHeight(Number.MIN_VALUE);
return shape;
}
onImportExternalData(external, options) {
super.onImportExternalData(external, options);
if (external) {
this._syncOptions(external);
}
}
// #endregion
// #region Accessor
// #endregion
/**
* Check whether it's PlaneRegion type or inherit from it.
* @type {Boolean}
*/
get isPlaneRegion() {
return true;
}
}
export { PlaneRegion }