import { Utils } from '../common/Utils';
import { BasePlanePoints } from './BasePlanePoints';
let _originalQuat = [0, 0, 0, 1];
/**
* PlaneRegion - 平面区域
*
* 可自定义坐标的平面物体(所有点位均在同一平面),支持内洞和样式。
*
* @class PlaneRegion
* @memberof THING
* @extends THING.BasePlanePoints
* @public
*
* @example
* const region = new THING.PlaneRegion({
* points: [[0, 0, 0], [5, 0, 0], [5, 0, 5], [0, 0, 5]],
* style: { color: '#4488ff' },
* });
*/
class PlaneRegion extends BasePlanePoints {
static defaultTagArray = ['Region'];
/**
* 可自定义坐标的平面物体(所有点位均在同一平面)
* @param {object} param 初始参数列表
* @param {number[][]} param.points 世界坐标系下(3D)区域外轮廓坐标
* @param {number[][][]} param.holes 世界坐标系下(3D)区域内空洞的坐标(支持多个空洞)
* @param {number[][]} param.selfPoints 自身坐标系下(3D)区域外轮廓坐标
* @param {number[][][]} param.selfHoles 自身坐标系下(3D)区域空洞坐标
* @param {number[][]} param.selfPlanePoints 自身平面坐标系下(2D)区域外轮廓坐标
* @param {number[][][]} param.selfPlaneHoles 自身平面坐标系下(2D)区域空洞坐标
* @param {object} param.style 物体样式
* @constructor
* @public
*/
constructor(param = {}) {
super(param);
}
// #region Overrides
onCreateBodyNode(param) {
const node = Utils.createObject('ExtrudeShape', { app: this.app });
node.setQuaternion(_originalQuat);
// We will show region as very very thin plane
node.setHeight(Number.MIN_VALUE);
return node;
}
// #endregion
// #region Accessor
// #endregion
/**
* Check whether it's PlaneRegion type or inherit from it.
* @type {boolean}
*/
get isPlaneRegion() {
return true;
}
}
export { PlaneRegion }