Source: objects/BaseTickableObject.js

import { BaseObject } from './BaseObject';

/**
 * @class BaseTickableObject
 * The base tickable object.
 * @memberof THING
 * @extends THING.BaseObject
 */
class BaseTickableObject extends BaseObject {

	/**
	 * The base tickable object that can invoke onUpdate() automaticly.
	 * @param {Object} param The initial parameters.
	 */
	constructor(param = {}) {
		super(param);

		this.onAddTickableObject();
	}

	// #region Overrides

	destroy() {
		this.onRemoveTickableObject();

		return super.destroy();
	}

	// #endregion

	/**
	 * Check whether it's BaseTickableObject type or inherit from it.
	 * @type {Boolean}
	 * @example
	 * let obj = new THING.BaseTickableObject()
	 * let ret = obj.isBaseTickableObject;
	 * // @expect(ret == true)
	 */
	get isBaseTickableObject() {
		return true;
	}

}

export { BaseTickableObject }