|  |  | 
 |  |  | import {OBJLoader} from "../lib/OBJLoader.js"; | 
 |  |  | import * as THREE from '../three.module.js'; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | function StoreConvey(object) { | 
 |  |  | function StoreConvey(object, data) { | 
 |  |  |     let that = this; | 
 |  |  |     that.no = 0; | 
 |  |  |     that.objectType = null; | 
 |  |  |     that.position = null; | 
 |  |  |     that.data = null; | 
 |  |  |     that.object = null; | 
 |  |  |  | 
 |  |  |     let chainList = []; | 
 |  |  |     let rollerList = []; | 
 |  |  |     let transportList = []; | 
 |  |  |  | 
 |  |  |     let init = function () { | 
 |  |  |         that.no = object.no; | 
 |  |  |         that.objectType = object.objectType; | 
 |  |  |         that.position = object.position; | 
 |  |  |         that.data = data; | 
 |  |  |         that.object = object; | 
 |  |  |         for (let i=0;i<that.data.length;i++) { | 
 |  |  |             let conveyObj = that.data[i]; | 
 |  |  |             switch (conveyObj.objectType) { | 
 |  |  |                 case "chain": | 
 |  |  |                     chainList.push(conveyObj); | 
 |  |  |                     break; | 
 |  |  |                 case "roller": | 
 |  |  |                     rollerList.push(conveyObj); | 
 |  |  |                     break; | 
 |  |  |                 case "transport": | 
 |  |  |                     transportList.push(conveyObj); | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     break; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     }; | 
 |  |  |     init(); | 
 |  |  |  | 
 |  |  |     that.create = function (scene) { | 
 |  |  |         switch (that.objectType) { | 
 |  |  |             case "chain": | 
 |  |  |                 new THREE.ObjectLoader().load( "../static/model/json/链条输送机.json", function (obj) { | 
 |  |  |                     obj.traverse (function (child) { | 
 |  |  |                         if (child instanceof THREE.Mesh) { | 
 |  |  |                             child.scale.set(1, 1, 1.8); | 
 |  |  |                             child.material = new THREE.MeshLambertMaterial({ | 
 |  |  |                                 color: 0xAAAAAA | 
 |  |  |                             }); | 
 |  |  |                         } | 
 |  |  |     this.load = function () { | 
 |  |  |         new THREE.ObjectLoader().load( "../static/model/json/链条输送机.json", function (obj) { | 
 |  |  |             obj.traverse (function (child) { | 
 |  |  |                 if (child instanceof THREE.Mesh) { | 
 |  |  |                     child.scale.set(1, 1, 1.6); | 
 |  |  |                     child.material = new THREE.MeshLambertMaterial({ | 
 |  |  |                         color: 0x444444 | 
 |  |  |                     }); | 
 |  |  |                     obj.position.x = 0 + that.position.x; | 
 |  |  |                     obj.position.y = 0 + that.position.y; | 
 |  |  |                     obj.position.z = 0 + that.position.z; | 
 |  |  |                     scene.addObject( obj ); | 
 |  |  |                     scene.conveyTypes.push({type: that.objectType, object: obj}); | 
 |  |  |                 } ); | 
 |  |  |                 break; | 
 |  |  |             case "roller": | 
 |  |  |                 break; | 
 |  |  |             case "transport": | 
 |  |  |                 break; | 
 |  |  |             default: | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |                     if (child.name === "Box034" || child.name === "Box035") { | 
 |  |  |                         child.material = new THREE.MeshLambertMaterial({ | 
 |  |  |                             color: 0x000000 | 
 |  |  |                         }); | 
 |  |  |                     } | 
 |  |  |                     child.castShadow = true; | 
 |  |  |                     child.receiveShadow = true; | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |  | 
 |  |  |             chainList.map(item => { | 
 |  |  |                 that.object.addObject(customize(obj.clone(), item)); | 
 |  |  |             }) | 
 |  |  |         }); | 
 |  |  |         new THREE.ObjectLoader().load( "../static/model/json/辊筒输送机.json", function (obj) { | 
 |  |  |             obj.traverse (function (child) { | 
 |  |  |                 if (child instanceof THREE.Mesh) { | 
 |  |  |                     child.scale.set(0.5, 1, 1); | 
 |  |  |                     child.material = new THREE.MeshLambertMaterial({ | 
 |  |  |                         color: 0x444444 | 
 |  |  |                     }); | 
 |  |  |                     child.castShadow = true; | 
 |  |  |                     child.receiveShadow = true; | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |             rollerList.map(item => { | 
 |  |  |                 that.object.addObject(customize(obj.clone(), item)); | 
 |  |  |             }) | 
 |  |  |         }); | 
 |  |  |         new THREE.ObjectLoader().load( "../static/model/json/顶升移栽.json", function (obj) { | 
 |  |  |             obj.traverse (function (child) { | 
 |  |  |                 if (child instanceof THREE.Mesh) { | 
 |  |  |                     child.scale.set(1, 1, 1); | 
 |  |  |                     child.material = new THREE.MeshLambertMaterial({ | 
 |  |  |                         color: 0x444444 | 
 |  |  |                     }); | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |             transportList.map(item => { | 
 |  |  |                 that.object.addObject(customize(obj.clone(), item)); | 
 |  |  |             }) | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     this.clone = function (param) { | 
 |  |  |         let goods=param.clone(); | 
 |  |  |         goods.position.set(this.positionX,this.positionY,this.positionZ); | 
 |  |  |         goods.uuid=this.no; | 
 |  |  |         goods.name=this.name; | 
 |  |  |         goods.type="StoreGoods"; | 
 |  |  |         return goods; | 
 |  |  |     function customize(clone, info) { | 
 |  |  |         let positionX = info.position.x || 0; | 
 |  |  |         let positionY = info.position.y || 0; | 
 |  |  |         let positionZ = info.position.z || 0; | 
 |  |  |         let rotateY = info.rotateY || 0; | 
 |  |  |  | 
 |  |  |         clone.position.x = 0 + positionX; | 
 |  |  |         clone.position.y = 0 + positionY; | 
 |  |  |         clone.position.z = 0 + positionZ; | 
 |  |  |         clone.rotateY(rotateY); | 
 |  |  |         if (info.traverse !== undefined) { | 
 |  |  |             let traverse = info.traverse; | 
 |  |  |             clone.traverse (function (child) { | 
 |  |  |                 if (child instanceof THREE.Mesh) { | 
 |  |  |                     // 拉伸 | 
 |  |  |                     if (traverse.scale !== undefined) { | 
 |  |  |                         let scaleX = traverse.scale.x || 1; | 
 |  |  |                         let scaleY = traverse.scale.y || 1; | 
 |  |  |                         let scaleZ = traverse.scale.z || 1; | 
 |  |  |                         child.scale.set(scaleX, scaleY, scaleZ); | 
 |  |  |                     } | 
 |  |  |                     // 颜色 | 
 |  |  |                     if (traverse.color !== undefined) { | 
 |  |  |                         child.material = new THREE.MeshLambertMaterial({ | 
 |  |  |                             color: traverse.color | 
 |  |  |                         }); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |         return clone; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |