From cc6d5f5fb6bbb23e88a95752a6e5265323d1c7d9 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期五, 17 十二月 2021 09:00:03 +0800
Subject: [PATCH] #

---
 static/js/object/CrnTask.js |  137 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 129 insertions(+), 8 deletions(-)

diff --git a/static/js/object/CrnTask.js b/static/js/object/CrnTask.js
index 3670542..226d367 100644
--- a/static/js/object/CrnTask.js
+++ b/static/js/object/CrnTask.js
@@ -1,8 +1,7 @@
 // 鍫嗗灈鏈哄綋鍓嶈繍琛岀姸鎬佸璞�
-function CrnTask(crnData) {
+function CrnTask(crnData, object) {
     let that = this;
 
-    // 璁块棶鍏湁灞炴�э紝闇�瑕佸湪鍙橀噺鍚嶅墠鍔犱笂this.
     that.crnNo = 0;
     that.run = false;
     // 涓婁竴鏁版嵁
@@ -11,6 +10,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 +18,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,21 +34,30 @@
         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");
     };
     init();
 
-    // 瀵瑰鍑芥暟
     that.modify = function (crnData) {
         if (that.run || that.crnNo === 0) {
             console.error(that.crnNo + "鍙峰爢鍨涙満鏇存柊澶辫触");
         } else {
+            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;
@@ -50,12 +65,118 @@
             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 ------------------------------------------------
-            //  new Route();    // body
-            // new Route();    // load
-            that.run = true;
-            console.log(that);
+
+            // 鍫嗗灈鏈哄弶鐗� 浼稿弶
+            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;
+                                    that.crnLoad.position.set(point.x, point.y, point.z);
+                                    that.crnFork.position.set(point.x, point.y, point.z);
+                                    break
+                                case 'fork':
+                                    that.crnFork.position.set(point.x, point.y, point.z);
+                                    break
+                                default:
+                                    break
+                            }
+                        }
+                    }
+                }
+            }
         }
     }
 

--
Gitblit v1.9.1