import { Utils } from '../common/Utils';
const __ = {
private: Symbol('private'),
}
/**
* @class BaseHelper
* The helper object.
* @memberof THING
*/
class BaseHelper {
/**
* The helper to show in scene.
*/
constructor() {
this[__.private] = {};
let _private = this[__.private];
_private.app = Utils.getCurrentApp();
_private.color = [1, 1, 1];
_private.points = [];
_private.colors = [];
let lines = Utils.createObject('LineSegments');
lines.setAttribute('Pickable', false);
lines.getUserData()['isDebugNode'] = true;
_private.lines = lines;
_private.app.objectManager.addLateUpdateObject(this);
// TODO: Enable instanced drawing later for line segments
}
// #region Override
onDispose() {
}
onLateUpdate(deltaTime) {
}
// #endregion
dispose() {
this.onDispose();
let _private = this[__.private];
_private.lines.dispose();
_private.lines = null;
_private.app.objectManager.removeLateUpdateObject(this);
}
begin() {
let _private = this[__.private];
_private.points.length = 0;
_private.colors.length = 0;
}
end() { }
buildHelper(helperPoints) { }
// Insert line.
_insertLine(p0, p1) {
let _private = this[__.private];
_private.points.push(p0);
_private.colors.push(_private.color);
_private.points.push(p1);
_private.colors.push(_private.color);
}
setVisible(value) {
this.visible = value;
}
getVisible() {
return this.visible;
}
// #region Accessor
/**
* Get lines.
* @type {Object}
*/
get lines() {
let _private = this[__.private];
return _private.lines;
}
/**
* Get/Set visible.
* @type {Boolean}
*/
get visible() {
let _private = this[__.private];
return _private.lines.getVisible();
}
set visible(value) {
let _private = this[__.private];
_private.lines.setVisible(value);
}
/**
* Get/Set color.
* @type {Number|String|Array<Number>}
*/
get color() {
let _private = this[__.private];
return _private.color;
}
set color(value) {
let _private = this[__.private];
_private.color = Utils.parseColor(value);
}
/**
* Get/Set private.
* @private
*/
get private() {
return this[__.private];
}
// #endregion
}
export { BaseHelper }