import { Utils } from '../common/Utils';
import { MathUtils } from '../math/MathUtils';
import { BaseLineSegmentsHelperComponent } from './BaseLineSegmentsHelperComponent';
/**
* @class PlanePointsHelperComponent
* The plane points helper component.
* @memberof THING
* @extends THING.BaseLineSegmentsHelperComponent
* @public
*/
class PlanePointsHelperComponent extends BaseLineSegmentsHelperComponent {
/**
* The helper of base points object in plane.
* @param {Object} param The initial parameters.
*/
constructor(param = {}) {
super();
}
// #region Private
_addLines(points, color) {
if (!points.length) {
return;
}
let originPoint = [points[0][0], 0, points[0][1]];
let startPoint = originPoint;
for (let i = 1; i < points.length; i++) {
let point = points[i];
let position = [point[0], 0, point[1]];
this.addLine(startPoint, position, color);
startPoint = position;
}
this.addLine(startPoint, originPoint, color);
}
// #endregion
// #region BaseComponent Interface
onAdd(object) {
super.onAdd(object);
}
// #endregion
refresh() {
// Begin to build lines
this.begin();
// Make little higher to let it can be seen
this.lineSegments.setPosition([0, 0.001, 0]);
// Make hole(s) lines
this.object.selfPlaneHoles.forEach(points => {
this._addLines(points, [1, 0, 0]);
});
// Make point(s) lines
this._addLines(this.object.localPoints, [0, 1, 0]);
// End to build lines
this.end();
}
// #region Accessors
/**
* Show/Hide helper.
* @type {Boolean}
* @public
*/
get visible() {
return this.lineSegments.getVisible();
}
set visible(value) {
this.lineSegments.setVisible(value);
this.refresh();
}
// #endregion
}
export { PlanePointsHelperComponent }