Render.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { Color } from 'three';
  2. import Constant from './Constant.js';
  3. export default class Render{
  4. constructor(){
  5. this.scene = null;
  6. }
  7. init(scene){
  8. this.scene = scene;
  9. }
  10. updateSelectModel(model,selected){
  11. if(model){
  12. if(selected){
  13. Constant.tilesMaterial.color.setHex(Constant.selectColor );
  14. if(model.type === "Group"){
  15. this.setSelectMaterialForGroup(model);
  16. }
  17. else if(model.type === "Mesh"){
  18. this.setSelectMaterialForMesh(model);
  19. }
  20. }
  21. else{
  22. Constant.tilesMaterial.color.setHex(0xffffff );
  23. if(model.type === "Group"){
  24. this.setDefaultMaterialForGroup(model);
  25. }
  26. else if(model.type === "Mesh"){
  27. this.setDefaultMaterialForMesh(model);
  28. }
  29. }
  30. }
  31. }
  32. setSelectMaterialForGroup(object3d){
  33. for(let i=0;i<object3d.children.length;++i){
  34. if(object3d.children[i].type === "Group"){
  35. this.setSelectMaterialForGroup(object3d.children[i]);
  36. }
  37. else{
  38. this.setSelectMaterialForMesh(object3d.children[i]);
  39. }
  40. }
  41. }
  42. setSelectMaterialForMesh(mesh){
  43. //mesh.material = Constant.selectTilesMaterial.clone();
  44. //mesh.currentHex = mesh.material.color.getHex();
  45. mesh.material.color.setHex(Constant.selectColor );
  46. }
  47. setDefaultMaterialForGroup(object3d){
  48. for(let i=0;i<object3d.children.length;++i){
  49. if(object3d.children[i].type === "Group"){
  50. this.setDefaultMaterialForGroup(object3d.children[i]);
  51. }
  52. else{
  53. this.setDefaultMaterialForMesh(object3d.children[i]);
  54. }
  55. }
  56. }
  57. setDefaultMaterialForMesh(mesh){
  58. //mesh.material = Constant.defaultTilesMaterial.clone();
  59. //mesh.material.color.setHex(mesh.currentHex);
  60. mesh.material.color.setHex(Constant.defaultColor );
  61. }
  62. }
  63. let render = new Render();
  64. export {render}