class HmQuadro extends HmAncestralObject3d {
constructor (_quadros, _numQuadro) {
super({quadros: _quadros, numQuadro: _numQuadro});
}
preparar() {
super.preparar();
this.cfg = this.quadros.cfg[this.numQuadro];
this.largura = this.cfg.largura + this.cfg.medida_moldura;
this.altura = this.cfg.altura + this.cfg.medida_moldura;
this.profundidade = this.cfg.profundidade_moldura;
this.meiaLargura = this.largura / 2;
this.meiaAltura = this.altura / 2;
this.meiaProfundidade = this.profundidade / 2;
this.sala = this.quadros.parede.paredes.sala;
this.meiaAlturaSala = this.sala.altura / 2;
this.yQuadro = _constantes.camera.posicaoInicial.y - this.meiaAlturaSala;
this.yInferiorQuadro = this.yQuadro - this.meiaAltura;
this.piso = this.quadros.parede.paredes.sala.piso;
this.yTopoPiso = this.piso.object3d.position.y + this.piso.meiaAltura;
this.yInferiorMinimoQuadro =
_constantes.quadro.alturaInferiorMinima + this.yTopoPiso - this.meiaAlturaSala;
this.yMinimoQuadro = this.yInferiorMinimoQuadro + this.meiaAltura;
if (this.yInferiorQuadro < this.yInferiorMinimoQuadro) {
this.object3d.position.y = this.yMinimoQuadro; // _posMinY;
} else {
this.object3d.position.y = this.yQuadro;
}
}
criar() {
super.criar();
this.pintura = this.criarObjeto(HmPintura);
this.moldura = this.criarObjeto(HmMoldura);
this.object3d.position.z = this.quadros.parede.meiaProfundidade + this.meiaProfundidade;
}
quadroInterceptado(_x,_y) {
var _vector = new THREE.Vector3(
(_x / window.innerWidth) * 2 - 1 , -(_y / window.innerHeight) * 2 + 1 , 0.5);
projector.unprojectVector(_vector,_obj3D.camera);
var _sub = _vector.sub(_obj3D.camera.position);
var _raycaster = new THREE.Raycaster(_obj3D.camera.position, _sub.normalize());
var _intersects = _raycaster.intersectObjects(this.object3d.children, true);
return (_intersects.length > 0) ? _intersects[0] : null;
// var intersects = _raycaster.intersectObjects(this.pintura.malha,true);
/*
if (_intersects.length > 0) {
_quadroInterceptado = _intersects[0];
}
return _quadroInterceptado;
*/
}
}