#
luxiaotao1123
2021-12-25 ce9da384d05f0b6b50aeeb5c3a00e53694695976
static/js/object/StoreConvey.js
@@ -2,55 +2,115 @@
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;
    }
}