Browse Source

一次协程上传更新景点数据

蓝色星空 1 year ago
parent
commit
19507a2d85
1 changed files with 80 additions and 1 deletions
  1. 80 1
      Assets/Scripts/UI/EdirPanel/UIEditorPanel.cs

+ 80 - 1
Assets/Scripts/UI/EdirPanel/UIEditorPanel.cs

@@ -1,6 +1,8 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -49,6 +51,7 @@ public class UIEditorPanel : MonoBehaviour, EventObserver
         listAlter = new List<objectData>();
         listSpoits = new SpoitValue();
         EventManager.Instance.Register(this, EventID.EVENT_1);
+        initCount = GameManager.Instance.ObjsParent.childCount;
     }
 
     public void Init()
@@ -227,14 +230,90 @@ public class UIEditorPanel : MonoBehaviour, EventObserver
 
         SaveBtn.onClick.AddListener(() =>
         {
+            /*
             if (MaterialObj == null)
                 return;
             GameManager.Instance.SaveSpoitObjs();
-
+            */
+            StartCoroutine(SetSpoitInfo());
         });
     }
+    private int initCount; // 本身存在多少个景点
+    public IEnumerator SetSpoitInfo()
+    {
+        countSplit =0;saveData.Clear();
+        int count = GameManager.Instance.ObjsParent.childCount;
+        for (int i = initCount; i <= count-1;i++) // 第一个LocalNULLShowObj是无用的
+        {
+            var spoit = GameManager.Instance.SpoitValues[i-initCount]; // 某个景点
+
+            for (int j = 0; j < spoit.material.Count; j++) // 更新 ObjectTransform
+            {
+                for (int k = 0;k< spoit.material[j].materialList.Count; k++)
+                {
+                    spoit.material[j].select = true;
+                    spoit.material[j].materialList[k].ObjectTransform.nowPos = GameManager.Instance.ObjsParent.GetChild(i).GetChild(0).GetChild(k).localPosition;
+                    spoit.material[j].materialList[k].ObjectTransform.nowRot = GameManager.Instance.ObjsParent.GetChild(i).GetChild(0).GetChild(k).localEulerAngles;
+                    spoit.material[j].materialList[k].ObjectTransform.nowScale = GameManager.Instance.ObjsParent.GetChild(i).GetChild(0).GetChild(k).localScale;
+                }
+            }
+            SplitSpoitData(spoit,count-initCount); //// 第一个LocalNULLShowObj是无用的 ,so -1
+            yield return null;
+        }
+    }
+    private List<SendSaveData> saveData = new List<SendSaveData>();
+    private void SplitSpoitData(SpoitValue spoit,int spoitCount)
+    {
+        countSplit++;
+        SendSaveData data = new SendSaveData();
+        data.id = spoit.id;
+        data.name = spoit.name;
+        data.projectId = DataManager.Instance.ProjectID;
+        data.material = spoit.material;
+        data.spoittf = spoit.spoitTf;
+        saveData.Add(data);
+
+        string sendData = JsonConvert.SerializeObject(saveData);
+        Debug.LogError(countSplit+"=="+spoitCount);
+        if(countSplit==spoitCount)
+            HttpTool.Instance.PostTest("/viewpoint/update", sendData, SaveCallBack);
+    }
+    private int countSplit =0;
 
+    private void SaveCallBack(string message)
+    {
+        if (message == "UnityWebRequest Error")
+        {
+            InstantiateCommand ErrorCommand = new InstantiateCommand(
+                InstantiateSystem.Instance.BlueObject.WarningPopUp,
+                InstantiateSystem.Instance.BlueObject.NetErrorText);
+            CommandExtensionSystem.Instance.Send(ErrorCommand);
+            //this.GetService<ISendLogService>().SendLog("Blue","UnityWebRequest Error");
+            return;
+        }
 
+        //Debug.LogError("SaveCallBack:  " + message);
+        JObject jObject = JObject.Parse(message);
+        string str = jObject["message"].ToString();
+        if (str != "更新成功")
+        {
+            InstantiateCommand ErrorCommand = new InstantiateCommand(
+                InstantiateSystem.Instance.BlueObject.WarningPopUp,
+                InstantiateSystem.Instance.BlueObject.NetErrorText);
+            CommandExtensionSystem.Instance.Send(ErrorCommand);
+            Debug.LogError("执行协程数:" + countSplit);
+            //this.GetService<ISendLogService>().SendLog("Blue","更新成功出现问题");
+            return;
+        }
+        Debug.Log("更新成功");
+        UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.SaveSpoitDataEnd);
+        ((LoadingPanel)UIManager.Instance.GetUI(UINameConfig.LoadingPanel)).TextStr = str;
+
+        InstantiateCommand Command = new InstantiateCommand(
+                InstantiateSystem.Instance.BlueObject.WarningPopUp,
+                "保存成功");
+        CommandExtensionSystem.Instance.Send(Command);
+    }
     /// <summary>
     ///  选择素材
     /// </summary>