import { Object3D } from './Object3D';

/**
 * @class BaseTickableObject3D
 * The base tickable 3D object.
 * @memberof THING
 * @extends THING.Object3D
 * @public
 */
class BaseTickableObject3D extends Object3D {

	/**
	 * 基础可更新的3D对象,可以在场景中自动调用 onUpdate()。
	 * @param {object} param 初始参数。
	 * 参数与 {@link THING.Object3D} 的构造函数相同。
	 * 请在 {@link THING.Object3D} 的文档中查看构造函数部分以获取详细参数列表。
	 */
	constructor(param = {}) {
		super(param);
	}

	// #region Overrides

	onCreate(options) {
		super.onCreate(options);

		this.onAddTickableObject();
	}

	destroy() {
		if (this.app.objectManager.isKeepAliveObject(this)) {
			return false;
		}

		this.onRemoveTickableObject();

		return super.destroy();
	}

	// #endregion

	get isBaseTickableObject3D() {
		return true;
	}

}

export { BaseTickableObject3D }