From 2b4aa7fdb59b2656e1281258ebd4a3bccc24958e Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期六, 25 十二月 2021 10:50:17 +0800 Subject: [PATCH] # --- static/js/object/StoreConvey.js | 121 +++++++++++++++++++++++++++------------- 1 files changed, 81 insertions(+), 40 deletions(-) diff --git a/static/js/object/StoreConvey.js b/static/js/object/StoreConvey.js index 2548bce..908cd44 100644 --- a/static/js/object/StoreConvey.js +++ b/static/js/object/StoreConvey.js @@ -2,55 +2,96 @@ 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.8); + child.material = new THREE.MeshLambertMaterial({ + color: 0xAAAAAA }); - 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; - } + } + }); + 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(1, 1, 1.8); + child.material = new THREE.MeshLambertMaterial({ + color: 0xAAAAAA + }); + } + }); + 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.8); + child.material = new THREE.MeshLambertMaterial({ + color: 0xAAAAAA + }); + } + }); + 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) { + clone.position.x = 0 + info.position.x; + clone.position.y = 0 + info.position.y; + clone.position.z = 0 + info.position.z; + clone.rotateY(info.rotateY); + if (info.traverse !== undefined) { + let traverse = info.traverse; + clone.traverse (function (child) { + if (child instanceof THREE.Mesh) { + child.scale.set(traverse.scale.x, traverse.scale.y, traverse.scale.z); + child.material = new THREE.MeshLambertMaterial({ + color: traverse.color + }); + } + }); + } + return clone; } } -- Gitblit v1.9.1