From 059270c12f452fcc3344b826f35295fd7c20906e Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 21 三月 2023 08:31:37 +0800
Subject: [PATCH] #

---
 static/js/app.js |  141 ++++++++++++++++++++---------------------------
 1 files changed, 60 insertions(+), 81 deletions(-)

diff --git a/static/js/app.js b/static/js/app.js
index 26215d3..cf1bd8b 100644
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -1,15 +1,18 @@
 import {OrbitControls} from './lib/OrbitControls.js';
 import { PointerLockControls } from './lib/PointerLockControls.js';
 import Stats from './lib/stats.module.js';
-import { OutlinePass } from './lib/OutlinePass.js';
+import { EffectComposer } from './lib/EffectComposer.js';
+import { RenderPass } from './lib/postprocessing/RenderPass.js';
+import { ShaderPass } from './lib/postprocessing/ShaderPass.js';
+import { OutlinePass } from './lib/postprocessing/OutlinePass.js';
+import { FXAAShader } from './lib/postprocessing/FXAAShader.js';
 import {MTLLoader} from './lib/MTLLoader.js';
 import {OBJLoader} from './lib/OBJLoader.js';
 import {StoreShelf} from './object/StoreShelf.js';
 import {StoreCrn} from './object/StoreCrn.js';
 import {StoreConvey} from './object/StoreConvey.js';
-import { Sky } from './object/Sky.js';
-
-
+import {StoreGoods} from './object/StoreGoods.js';
+import {StaTask} from './object/StaTask.js';
 
 var APP = {
 
@@ -22,8 +25,8 @@
 		this.firstTime = 1;
 		this.stats = null;
 		this.outlinePass = null;
-		this.goodTypes=[];//瀛樺偍鎵�鏈夌殑搴撲綅绫诲瀷
 		this.crnTasks = [];// 鍫嗗灈鏈哄垪琛�
+		this.staTasks = [];// 杈撻�佺嚎鍒楄〃
 		this.moveForward = false;//鏄惁鍚戝墠杩愯
 		this.moveBackward = false;//鏄惁鍚戝悗杩愯
 		this.moveLeft = false;//鏄惁鍚戝乏杩愯
@@ -49,6 +52,7 @@
 			this.initLight();
 			this.initReSize(this);
 			this.initOutLine();
+			// this.initComposer();
 			this.initObjectSelect();
 			this.initPointLockControl(this);
 			this.initFloor();
@@ -58,12 +62,17 @@
 		this.animate = function () {
 			requestAnimationFrame(this.animate.bind(this));
 			this.stats.begin();
-			this.renderer.render(this.scene, this.camera);
+			if (this.composer) {
+				this.composer.render();
+			} else {
+				this.renderer.render(this.scene, this.camera);
+			}
 			this.firstPersonMove();
 			this.initStoreObjects(this);
 			this.stats.end();
 			this.queryCrn();
 			this.crnMove();
+			this.querySta();
 		}
 		this.initScene = function () {
 			this.scene = new THREE.Scene();
@@ -88,7 +97,7 @@
 			// this.renderer.toneMapping = THREE.CineonToneMapping;	// 鑹茶皟
 			this.renderer.setSize(window.innerWidth, window.innerHeight);
 			this.renderer.setPixelRatio( window.devicePixelRatio );
-			this.renderer.shadowMap.enabled = false;
+			// this.renderer.shadowMap.enabled = true;	// 鏄惁寮�鍚槾褰�
 			this.renderer.shadowMap.type = THREE.BasicShadowMap;
 			this.dom = document.getElementById("container");
 			this.dom.appendChild(this.renderer.domElement);
@@ -100,27 +109,14 @@
 			ambient.position.set(0, 0, 0);
 			this.addObject(ambient);
 
-			// 娣诲姞骞宠鍏�,骞宠鍏夌被浼间簬澶槼鍏�
-			// let directionalLight = new THREE.DirectionalLight(0xffffff, 0.3);//妯℃嫙杩滃绫讳技澶槼鐨勫厜婧�
-			// directionalLight.position.set(0, 200, 0);
-			// this.addObject(directionalLight);
-			// //璁剧疆鐐瑰厜婧�
-			// let pointLight1 = new THREE.PointLight(0xffffff, 0.3);
-			// pointLight1.position.set(-500, 200, 0);
-			// this.addObject(pointLight1);
-			// let pointLight2 = new THREE.PointLight(0xffffff, 0.3);
-			// pointLight2.position.set(500, 200, 0);
-			// this.addObject(pointLight2);
-
 			// 闃村奖鑱氬厜鐏�
 			let pointLight = new THREE.SpotLight(0xFFFAFA,1);
 			pointLight.position.set(0, 1500, 2500);
-			pointLight.castShadow = true;
+			// pointLight.castShadow = true; 	// 鏄惁寮�鍚槾褰�
 			pointLight.shadow.camera.near = 2000;
 			pointLight.shadow.camera.far = 10000;
-			pointLight.shadow.mapSize.height = 100000;
-			pointLight.shadow.mapSize.width = 100000;
-			// 灏嗘墍鏈夊垱寤虹殑鐗╀綋鍔犲叆鍒板満鏅腑鍘�
+			pointLight.shadow.mapSize.height = 200000;
+			pointLight.shadow.mapSize.width = 200000;
 			this.addObject(pointLight);
 		}
 		this.initOrbitControl = function () {
@@ -145,36 +141,13 @@
 				this.scene.background = new THREE.Color( 0x333333 );
 			} else {
 				const cubeTextureLoader = new THREE.CubeTextureLoader();
-				cubeTextureLoader.setPath( '../static/img/skybox0/' );
+				cubeTextureLoader.setPath( '../static/img/skybox/' );
 				this.scene.background = cubeTextureLoader.load([
 					"px.jpg", "nx.jpg",
 					"py.jpg", "ny.jpg",
 					"pz.jpg", "nz.jpg"
 				]);
 			}
-			// 澶槼
-			// let sky = new Sky();
-			// sky.scale.setScalar( 450000 );
-			// this.addObject( sky );
-			// let sun = new THREE.Vector3();
-			// const effectController = {
-			// 	turbidity: 10,
-			// 	rayleigh: 3,
-			// 	mieCoefficient: 0.005,
-			// 	mieDirectionalG: 0.7,
-			// 	elevation: 2,
-			// 	azimuth: 180,
-			// 	exposure: this.renderer.toneMappingExposure
-			// };
-			// const uniforms = sky.material.uniforms;
-			// uniforms[ 'turbidity' ].value = effectController.turbidity;
-			// uniforms[ 'rayleigh' ].value = effectController.rayleigh;
-			// uniforms[ 'mieCoefficient' ].value = effectController.mieCoefficient;
-			// uniforms[ 'mieDirectionalG' ].value = effectController.mieDirectionalG;
-			// const phi = THREE.MathUtils.degToRad( 90 - effectController.elevation );
-			// const theta = THREE.MathUtils.degToRad( effectController.azimuth );
-			// sun.setFromSphericalCoords( 1, phi, theta );
-			// uniforms[ 'sunPosition' ].value.copy( sun );
 		}
 		this.initReSize = function(object){
 			window.addEventListener('resize', function () {
@@ -185,15 +158,27 @@
 		}
 		this.initOutLine = function(){
 			this.outlinePass = new OutlinePass( new THREE.Vector2( window.innerWidth, window.innerHeight ), this.scene, this.camera )
-			this.outlinePass.edgeStrength = 10;//鍖呭洿绾挎祿搴�
-			this.outlinePass.edgeGlow = 0.1;//杈圭紭绾胯寖鍥�
-			this.outlinePass.edgeThickness = 1;//杈圭紭绾挎祿搴�
-			this.outlinePass.pulsePeriod = 2;//鍖呭洿绾块棯鐑佽瘎鐜�
-			this.outlinePass.visibleEdgeColor.set('#B31985');//鍖呭洿绾块鑹�
-			this.outlinePass.hiddenEdgeColor.set('#190a05');//琚伄鎸$殑杈圭晫绾块鑹�
+			// this.outlinePass.edgeStrength = 1;//鍖呭洿绾挎祿搴�
+			// this.outlinePass.edgeGlow = 0.1;//杈圭紭绾胯寖鍥�
+			// this.outlinePass.edgeThickness = 1;//杈圭紭绾挎祿搴�
+			// this.outlinePass.pulsePeriod = 2;//鍖呭洿绾块棯鐑佽瘎鐜�
+			// this.outlinePass.visibleEdgeColor.set('#B31985');//鍖呭洿绾块鑹�
+			// this.outlinePass.hiddenEdgeColor.set('#190a05');//琚伄鎸$殑杈圭晫绾块鑹�
+		}
+		this.initComposer = function(){
+			this.composer = new EffectComposer(this.renderer);
+			const renderPass = new RenderPass( this.scene, this.camera );
+			this.composer.addPass( renderPass );
+			this.composer.addPass(this.outlinePass);
+
+			const pixelRatio = this.renderer.getPixelRatio();
+			this.fxaaPass = new ShaderPass( FXAAShader );
+			this.fxaaPass.material.uniforms[ 'resolution' ].value.x = 1 / ( this.dom.offsetWidth * pixelRatio );
+			this.fxaaPass.material.uniforms[ 'resolution' ].value.y = 1 / ( this.dom.offsetHeight * pixelRatio );
+			this.composer.addPass( this.fxaaPass );
 		}
 		this.initObjectSelect = function(){
-			new ObjectSelect(this.scene, this.camera, this.outlinePass);
+			new ObjectSelect(this.scene, this.camera, this.outlinePass, this);
 		}
 		this.initPointLockControl = function(object){
 			this.controls = new PointerLockControls( this.camera, document.body );
@@ -344,25 +329,14 @@
 		this.initStoreObjects = function (object) {
 			if (this.firstTime === 1) {
 				if (Store3DData !== undefined && Store3DData !== null) {
-					for(var group of Store3DData.data.store.groups) {
+					for(let group of Store3DData.data.store.groups) {
 						new StoreCrn(group.crn, object);
-						for (var line of group.lines) {
+						for (let line of group.lines) {
 							let shelf = new StoreShelf(line);
-							object.addObject(shelf);
-							//鏄剧ず搴撲綅涓婄殑璐х墿
-							// for (var bin of line.bins) {
-							// 	let existGoods=this.getExistedGoodType(bin.State);
-							// 	let storeGoods = new StoreGoods(optionGroup, bin);
-							// 	if(existGoods==null) {
-							// 		let goods=storeGoods.create();
-							// 		object.addObject(goods);
-							// 		this.goodTypes.push({type: bin.State, object: goods});
-							// 	} else {
-							// 		let goods= storeGoods.clone(existGoods);
-							// 		object.addObject(goods);
-							// 	}
-							// }
-
+							object.addObject(shelf.mesh);
+							if (line.bins !== null) {
+								new StoreGoods(object, line.bins, shelf);
+							}
 						}
 					}
 					this.firstTime = 0;
@@ -383,20 +357,25 @@
 				}
 			}
 		}
-		this.getExistedGoodType=function(state){
-			for (let i=0;i<this.goodTypes.length;i++) {
-				let type=this.goodTypes[i];
-				if(type.type===state) {
-					return type.object;
-				}
-			}
-			return null;
-		}
-		this.crnMove = function (object) {
+		this.crnMove = function () {
 			for (let crnTask of this.crnTasks) {
 				crnTask.move();
 			}
 		}
+		this.querySta = function () {
+			if (StaDatas !== null && this.firstTime === 0) {
+				for (let staData of StaDatas) {
+					let staTask = getArrVal(this.staTasks, "no", staData.no);
+					if (null == staTask) {
+						this.staTasks.push(new StaTask(staData, this));
+					} else {
+						if(!staTask.run && !staTask.isDel) {
+							staTask.modify(staData);
+						}
+					}
+				}
+			}
+		}
 
 		// 鍔熻兘鏂规硶鍖�
 		this.changeStats = function () {

--
Gitblit v1.9.1