| | |
| | | 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: 0x8B8378 |
| | | }); |
| | | 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 |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | 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: 0x8B8378 |
| | | }); |
| | | } |
| | | }); |
| | | 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: 0x8B8378 |
| | | }); |
| | | } |
| | | }); |
| | | 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; |
| | | } |
| | | |
| | | } |