Source: helpers/ObjectColliderBoxHelper.js

import { BaseBoxHelper } from './BaseBoxHelper';

const __ = {
	private: Symbol('private'),
}

/**
 * @class ObjectColliderBoxHelper
 * The object collider box helper object.
 * @memberof THING
 * @extends THING.BaseBoxHelper
 */
class ObjectColliderBoxHelper extends BaseBoxHelper {

	/**
	 * The collider box helper of object, it can show collider box in scene.
	 */
	constructor(param = {}) {
		super(param);

		this[__.private] = {};
		let _private = this[__.private];

		_private.object = param['object'];
	}

	// #region Override

	onLateUpdate(deltaTime) {
		let _private = this[__.private];

		let object = _private.object;
		let collider = object.collider;
		let transform = collider.areaInfo.transform;
		let min = transform.min;
		let max = transform.max;

		let boxPoints = [
			// TOP
			[min[0], min[1], min[2]], // 0
			[max[0], min[1], min[2]], // 1
			[max[0], min[1], max[2]], // 2
			[min[0], min[1], max[2]], // 3
			// BOTTOM
			[min[0], max[1], min[2]], // 4
			[max[0], max[1], min[2]], // 5
			[max[0], max[1], max[2]], // 6
			[min[0], max[1], max[2]], // 7
		];

		this.begin();
		this.buildBox(boxPoints);
		this.end();

		super.onLateUpdate(deltaTime);
	}

	// #endregion

	// #region Accessor

	/**
	 * Get object.
	 * @type {THING.BaseObject}
	 * @private
	 */
	get object() {
		let _private = this[__.private];

		return _private.object;
	}

	// #endregion

}

export { ObjectColliderBoxHelper }