class HmAncestral {
	constructor (_dados) {
		if (_dados) {
			this.dados = _dados;
			var _this = this;
			Object.keys(_dados).forEach(
				function(_nomeObj) {
					_this[_nomeObj] = _dados[_nomeObj];
				});
			this.preparar();
			this.criar();
		}
	}
	
	get incluir(){
		return true;
	}

	preparar() {
	}

	criar() {
	}
	
}

function criarPastaObjeto3d(_pai, _guiPai, _nome) {
   _pai.controles = {
      pai: _pai,
      posicaoX: _pai.object3d.position.x,
      posicaoY: _pai.object3d.position.y,
      posicaoZ: _pai.object3d.position.z,
      rotacaoX: _pai.object3d.rotation.x,
      rotacaoY: _pai.object3d.rotation.y,
      rotacaoZ: _pai.object3d.rotation.z
   };
   var _folder = _guiPai.addFolder(_nome);
   _folder.posicao = _folder.addFolder("posição " + _nome);
   _folder.posicao.add(_pai.controles, 'posicaoX', -300, 300).onChange(function(e) {
      this.object.pai.controles.posicaoX = e;
      this.object.pai.object3d.position.x = e;
   });
   _folder.posicao.add(_pai.controles, 'posicaoY', -300, 300).onChange(function(e) {
      this.object.pai.controles.posicaoY = e;
      this.object.pai.object3d.position.y = e;
   });
   _folder.posicao.add(_pai.controles, 'posicaoZ', -300, 300).onChange(function(e) {
      this.object.pai.controles.posicaoZ = e;
      this.object.pai.object3d.position.z = e;
   });
   _folder.rotacao = _folder.addFolder("rotação " + _nome);
   _folder.rotacao.add(_pai.controles, 'rotacaoX', 0, 2 * Math.PI).onChange(function(e) {
      this.object.pai.controles.rotacaoX = e;
      this.object.pai.object3d.rotation.x = e;
   });
   _folder.rotacao.add(_pai.controles, 'rotacaoY', 0, 2 * Math.PI).onChange(function(e) {
      this.object.pai.controles.rotacaoY = e;
      this.object.pai.object3d.rotation.y = e;
   });
   _folder.rotacao.add(_pai.controles, 'rotacaoZ', 0, 2 * Math.PI).onChange(function(e) {
      this.object.pai.controles.rotacaoZ = e;
      this.object.pai.object3d.rotation.z = e;
   });
   return _folder;
}