Source: objects/BaseContainer3D.js

import { BodyObject } from './BodyObject';
import { Object3D } from './Object3D';
import { Utils } from '@uino/base-thing';

/**
 * @class Object3D
 * The base object 3D.
 * @memberof THING
 * @extends THING.BaseObject
 */
class BaseContainer3D extends Object3D {

	/**
	 * The base container in scene.
	 */
	constructor(param = {}) {
		super(param);
	}

	onSetupBody(param) {
		// Container do not create any renderable node, so we just create root node here
		param['rootNode'] = param['rootNode'] || Utils.createObject('Node');

		// Create body object with root node
		this._body = new BodyObject();
		this._body.init(this, param);

		// Container is always in loaded state
		this.loaded = true;
	}

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

}

export { BaseContainer3D }