All files / app/assets/javascripts/blob/3d_viewer mesh_object.js

100% Statements 12/12
100% Branches 2/2
100% Functions 2/2
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37    1x 1x                       4x   4x   4x   4x 3x   3x 3x   3x 3x         1x      
import { Matrix4, MeshLambertMaterial, Mesh } from 'three';
 
const defaultColor = 0xe24329;
const materials = {
  default: new MeshLambertMaterial({
    color: defaultColor,
  }),
  wireframe: new MeshLambertMaterial({
    color: defaultColor,
    wireframe: true,
  }),
};
 
export default class MeshObject extends Mesh {
  constructor(geo) {
    super(geo, materials.default);
 
    this.geometry.computeBoundingSphere();
 
    this.rotation.set(-Math.PI / 2, 0, 0);
 
    if (this.geometry.boundingSphere.radius > 4) {
      const scale = 4 / this.geometry.boundingSphere.radius;
 
      this.geometry.applyMatrix4(new Matrix4().makeScale(scale, scale, scale));
      this.geometry.computeBoundingSphere();
 
      this.position.x = -this.geometry.boundingSphere.center.x;
      this.position.z = this.geometry.boundingSphere.center.y;
    }
  }
 
  changeMaterial(materialKey) {
    this.material = materials[materialKey];
  }
}