class HmAncestralObject3d extends HmAncestral {
	constructor(_dados) {
		super(_dados);
	}
	
	classe() {
		return null;
	}

	// object3d = new THREE.Object3D();

	preparar() {
		super.preparar();
		this.object3d = new THREE.Object3D();
		//this.object3d = new THREE.Object3D();
	}

	criar() {
		super.criar();
		var classe = this.classe();
		if (classe) this.criarObjeto(classe);
		this.criarMalha();
	}

	criarGeometria() {
		return null;
	}

	criarMaterial() {
		return null;
	}

	criarMalha() {
		this.geometria = this.criarGeometria();
		this.material = this.criarMaterial();
		if (this.geometria && this.material)
			this.malha = this.criarObjetoMesh(new THREE.Mesh(this.geometria,this.material));
		return this.malha;
	}

	criarObjeto(_objeto,_vetor) {
		var _obj = (typeof _objeto === "function") ? new _objeto(this) : _objeto;
		this.object3d.add(_obj.object3d);
		if (_vetor) { _vetor.push(_obj); }
		return _obj;
	}

	criarObjetoMesh(_objeto,_vetor) {
		return this.criarObjeto({object3d: _objeto},_vetor);
	}

	interceptado(_x,_y) {
		return false;
	}
	
	vetorExternoInterceptado(_vetor,_x,_y) {
		this._vetor.find(function(_obj){return _obj.interceptado(_x,_y)});
	}
}