From f1b81cabbcc35ab8f3f871ea13c65af33e2c42a4 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期三, 22 十二月 2021 09:10:12 +0800 Subject: [PATCH] # --- static/js/object/CrnTask.js | 197 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 173 insertions(+), 24 deletions(-) diff --git a/static/js/object/CrnTask.js b/static/js/object/CrnTask.js index 3670542..6a81258 100644 --- a/static/js/object/CrnTask.js +++ b/static/js/object/CrnTask.js @@ -1,8 +1,20 @@ + +const xOffset = -1735; +const yOffset = -289; +const zOffset = -480; + +const xOffset0 = -1735; +const yOffset0 = -108; +const zOffset0 = -480; + +const xOffset1 = -1735; +const yOffset1 = -107; +const zOffset1 = -475; + // 鍫嗗灈鏈哄綋鍓嶈繍琛岀姸鎬佸璞� -function CrnTask(crnData) { +function CrnTask(crnData, object) { let that = this; - // 璁块棶鍏湁灞炴�э紝闇�瑕佸湪鍙橀噺鍚嶅墠鍔犱笂this. that.crnNo = 0; that.run = false; // 涓婁竴鏁版嵁 @@ -11,6 +23,7 @@ that.preX = 0; that.preY = 0; that.preZ = 0; + that.prePosition = null; that.preForkPos = -1; // -1, "涓嶅湪瀹氫綅" 0, "璐у弶鍘熶綅" 1, "璐у弶鍦ㄥ乏渚ц繙" 2, "璐у弶鍦ㄥ乏渚�" 3, "璐у弶鍦ㄥ彸渚�" 4, "璐у弶鍦ㄥ彸渚ц繙" // 褰撳墠鏁版嵁 that.bay = 1 ; @@ -18,9 +31,15 @@ that.x = 0; that.y = 0; that.z = 0; + that.position = null; that.forkPos = -1; - // 鏋勯�犲嚱鏁� + that.crnBody = null; + that.crnLoad = null; + that.crnFork = null; + + let curves = []; + let init = function () { that.crnNo = crnData.crnNo; that.bay = crnData.bay; @@ -28,34 +47,164 @@ that.x = crnData.position.x; that.y = crnData.position.y; that.z = crnData.position.z; + that.position = crnData.position; that.forkPos = crnData.forkPos; + + that.crnBody = getArrVal(object.objects, "name", that.crnNo + "-body"); + that.crnLoad = getArrVal(object.objects, "name", that.crnNo + "-load"); + that.crnFork = getArrVal(object.objects, "name", that.crnNo + "-fork"); + if (that.crnBody===null || that.crnLoad===null || that.crnFork==null) { + console.log(that.crnNo + "鍙峰爢鍨涙満娌℃湁鍒濆鍖�"); + } }; init(); - // 瀵瑰鍑芥暟 that.modify = function (crnData) { if (that.run || that.crnNo === 0) { console.error(that.crnNo + "鍙峰爢鍨涙満鏇存柊澶辫触"); - } else { - // 涓婁竴娆� - that.preBay = that.bay; - that.preLev = that.lev; - that.preX = that.x; - that.preY = that.y; - that.preY = that.y; - that.preForkPos = that.forkPos; - // 褰撳墠 - that.bay = crnData.bay; - that.lev = crnData.lev; - that.x = crnData.position.x; - that.y = crnData.position.y; - that.z = crnData.position.z; - that.forkPos = crnData.forkPos; - // create Route ------------------------------------------------ - // new Route(); // body - // new Route(); // load - that.run = true; - console.log(that); + return; + } + if (that.crnBody===null) { + that.crnBody = getArrVal(object.objects, "name", that.crnNo + "-body"); + return; + } + if (that.crnLoad===null) { + that.crnLoad = getArrVal(object.objects, "name", that.crnNo + "-load"); + return; + } + if (that.crnFork===null) { + that.crnFork = getArrVal(object.objects, "name", that.crnNo + "-fork"); + return; + } + if (JSON.stringify(crnData.position) === JSON.stringify(that.position)) { + return; + } + that.run = true; + // 涓婁竴娆� + that.preBay = that.bay; + that.preLev = that.lev; + that.preX = that.x; + that.preY = that.y; + that.preY = that.y; + that.prePosition = JSON.parse(JSON.stringify(that.position)); + that.preForkPos = that.forkPos; + // 褰撳墠 + that.bay = crnData.bay; + that.lev = crnData.lev; + that.x = crnData.position.x; + that.y = crnData.position.y; + that.z = crnData.position.z; + that.position = crnData.position; + that.forkPos = crnData.forkPos; + + // create Route ------------------------------------------------ + + // 鍫嗗灈鏈哄弶鐗� 浼稿弶 + if (that.prePosition.x !== that.position.x) { + curves.push({ + start: false, + progress: 0, + part: 'fork', + route: new Route([ + { + x: that.prePosition.x, + y: that.crnFork.position.y, + z: that.crnFork.position.z + }, + { + x: that.position.x, + y: that.crnFork.position.y, + z: that.crnFork.position.z + } + ]) + }) + } + + // 鍫嗗灈鏈鸿浇璐у彴鍜屽弶鐗� 绉诲姩 + if (that.prePosition.z !== that.position.z || that.prePosition.y !== that.position.y) { + curves.push({ + start: false, + progress: 0, + part: 'load', + route: new Route([ + { + x: that.crnLoad.position.x, + y: that.prePosition.y, + z: that.prePosition.z + }, + { + x: that.crnLoad.position.x, + y: that.position.y, + z: that.position.z + } + ]) + }) + } + + // 鍫嗗灈鏈烘湰浣撹繍鍔ㄨ建杩� + if (that.prePosition.z !== that.position.z && false) { + curves.push({ + start: false, + progress: 0, + part: 'body', + route: new Route([ + { + x: that.crnBody.position.x, + y: that.crnBody.position.y, + z: that.prePosition.z + }, + { + x: that.crnBody.position.x, + y: that.crnBody.position.y, + z: that.position.z + } + ]) + }) + } + + curves.map((value, index) => { + console.log(value.part + " --> " + JSON.stringify(value.route.points)) + }); + + curves[0].start = true; + + } + + that.move = function () { + if (curves.length > 0) { + for (let i = 0; i < curves.length ; i++) { + if (curves[i].start) { + curves[i].progress += 0.01; + if (curves[i].progress > 1.0) { + curves[i].start = false; + if (i !== curves.length - 1) { + curves[i+1].start = true; + } else { + curves = []; + that.run = false; + } + } else { + let point = curves[i].route.getPoint(curves[i].progress); + if ( point && point.x ) { + switch (curves[i].part) { + case 'body': + that.crnBody.position.set(point.x, point.y, point.z); + break + case 'load': + that.crnBody.position.z = point.z + zOffset; + that.crnLoad.position.set(point.x, point.y + yOffset0, point.z + zOffset0); + that.crnFork.position.set(point.x, point.y + yOffset1, point.z + zOffset1); + break + case 'fork': + that.crnFork.position.set(point.x + xOffset1, point.y, point.z); + break + default: + break + } + } + } + } + } } } -- Gitblit v1.9.1