蓝色星空 пре 1 година
родитељ
комит
2a20174a14

+ 169 - 169
Assets/MRNavigatorPro.unity

@@ -1793,6 +1793,170 @@ PrefabInstance:
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
     m_RemovedComponents: []
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: c2949074f3b713b4abec308e62ad895b, type: 3}
   m_SourcePrefab: {fileID: 100100000, guid: c2949074f3b713b4abec308e62ad895b, type: 3}
+--- !u!43 &347836781
+Mesh:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  serializedVersion: 10
+  m_SubMeshes:
+  - serializedVersion: 2
+    firstByte: 0
+    indexCount: 0
+    topology: 5
+    baseVertex: 0
+    firstVertex: 0
+    vertexCount: 0
+    localAABB:
+      m_Center: {x: 0, y: 0, z: 0}
+      m_Extent: {x: 0, y: 0, z: 0}
+  m_Shapes:
+    vertices: []
+    shapes: []
+    channels: []
+    fullWeights: []
+  m_BindPose: []
+  m_BoneNameHashes: 
+  m_RootBoneNameHash: 0
+  m_BonesAABB: []
+  m_VariableBoneCountWeights:
+    m_Data: 
+  m_MeshCompression: 0
+  m_IsReadable: 1
+  m_KeepVertices: 0
+  m_KeepIndices: 0
+  m_IndexFormat: 1
+  m_IndexBuffer: 
+  m_VertexData:
+    serializedVersion: 3
+    m_VertexCount: 0
+    m_Channels:
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 3
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    m_DataSize: 0
+    _typelessdata: 
+  m_CompressedMesh:
+    m_Vertices:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_UV:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_Normals:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_Tangents:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_Weights:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_NormalSigns:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_TangentSigns:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_FloatColors:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_BoneIndices:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_Triangles:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_UVInfo: 0
+  m_LocalAABB:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 1.7014117e+38, y: 1.7014117e+38, z: 1.7014117e+38}
+  m_MeshUsageFlags: 0
+  m_BakedConvexCollisionMesh: 
+  m_BakedTriangleCollisionMesh: 
+  m_MeshMetrics[0]: 1
+  m_MeshMetrics[1]: 1
+  m_MeshOptimizationFlags: 1
+  m_StreamData:
+    serializedVersion: 2
+    offset: 0
+    size: 0
+    path: 
 --- !u!1 &349398691
 --- !u!1 &349398691
 GameObject:
 GameObject:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0
@@ -1953,7 +2117,7 @@ MeshFilter:
   m_PrefabInstance: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 375338274}
   m_GameObject: {fileID: 375338274}
-  m_Mesh: {fileID: 723697558}
+  m_Mesh: {fileID: 347836781}
 --- !u!114 &375338278
 --- !u!114 &375338278
 MonoBehaviour:
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0
@@ -3022,170 +3186,6 @@ Transform:
     type: 3}
     type: 3}
   m_PrefabInstance: {fileID: 706104185}
   m_PrefabInstance: {fileID: 706104185}
   m_PrefabAsset: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
---- !u!43 &723697558
-Mesh:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_Name: 
-  serializedVersion: 10
-  m_SubMeshes:
-  - serializedVersion: 2
-    firstByte: 0
-    indexCount: 0
-    topology: 5
-    baseVertex: 0
-    firstVertex: 0
-    vertexCount: 0
-    localAABB:
-      m_Center: {x: 0, y: 0, z: 0}
-      m_Extent: {x: 0, y: 0, z: 0}
-  m_Shapes:
-    vertices: []
-    shapes: []
-    channels: []
-    fullWeights: []
-  m_BindPose: []
-  m_BoneNameHashes: 
-  m_RootBoneNameHash: 0
-  m_BonesAABB: []
-  m_VariableBoneCountWeights:
-    m_Data: 
-  m_MeshCompression: 0
-  m_IsReadable: 1
-  m_KeepVertices: 0
-  m_KeepIndices: 0
-  m_IndexFormat: 1
-  m_IndexBuffer: 
-  m_VertexData:
-    serializedVersion: 3
-    m_VertexCount: 0
-    m_Channels:
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 3
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    m_DataSize: 0
-    _typelessdata: 
-  m_CompressedMesh:
-    m_Vertices:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_UV:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Normals:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Tangents:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Weights:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_NormalSigns:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_TangentSigns:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_FloatColors:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_BoneIndices:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Triangles:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_UVInfo: 0
-  m_LocalAABB:
-    m_Center: {x: 0, y: 0, z: 0}
-    m_Extent: {x: 1.7014117e+38, y: 1.7014117e+38, z: 1.7014117e+38}
-  m_MeshUsageFlags: 0
-  m_BakedConvexCollisionMesh: 
-  m_BakedTriangleCollisionMesh: 
-  m_MeshMetrics[0]: 1
-  m_MeshMetrics[1]: 1
-  m_MeshOptimizationFlags: 1
-  m_StreamData:
-    serializedVersion: 2
-    offset: 0
-    size: 0
-    path: 
 --- !u!224 &745343613 stripped
 --- !u!224 &745343613 stripped
 RectTransform:
 RectTransform:
   m_CorrespondingSourceObject: {fileID: 7742697447022607696, guid: 7f34641aa9b798d4980647aff233a880,
   m_CorrespondingSourceObject: {fileID: 7742697447022607696, guid: 7f34641aa9b798d4980647aff233a880,
@@ -5491,7 +5491,7 @@ PrefabInstance:
     - target: {fileID: 2656584712679981451, guid: 3e8996c442fe40541beb734ca45f2bf6,
     - target: {fileID: 2656584712679981451, guid: 3e8996c442fe40541beb734ca45f2bf6,
         type: 3}
         type: 3}
       propertyPath: m_AnchoredPosition.y
       propertyPath: m_AnchoredPosition.y
-      value: 0.000023327515
+      value: -0.00094512943
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
     - target: {fileID: 2656584712838976906, guid: 3e8996c442fe40541beb734ca45f2bf6,
     - target: {fileID: 2656584712838976906, guid: 3e8996c442fe40541beb734ca45f2bf6,
         type: 3}
         type: 3}
@@ -5621,7 +5621,7 @@ PrefabInstance:
     - target: {fileID: 2656584713474595953, guid: 3e8996c442fe40541beb734ca45f2bf6,
     - target: {fileID: 2656584713474595953, guid: 3e8996c442fe40541beb734ca45f2bf6,
         type: 3}
         type: 3}
       propertyPath: m_AnchoredPosition.y
       propertyPath: m_AnchoredPosition.y
-      value: -0.0042255605
+      value: -0.0053148707
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
     - target: {fileID: 2656584713571100915, guid: 3e8996c442fe40541beb734ca45f2bf6,
     - target: {fileID: 2656584713571100915, guid: 3e8996c442fe40541beb734ca45f2bf6,
         type: 3}
         type: 3}
@@ -8310,7 +8310,7 @@ PrefabInstance:
     - target: {fileID: 486518953982833418, guid: 6693e68f506a6c944b1783fb7e52a498,
     - target: {fileID: 486518953982833418, guid: 6693e68f506a6c944b1783fb7e52a498,
         type: 3}
         type: 3}
       propertyPath: m_AnchoredPosition.y
       propertyPath: m_AnchoredPosition.y
-      value: -0.00051455287
+      value: 0.0017600798
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
     - target: {fileID: 486518953989235048, guid: 6693e68f506a6c944b1783fb7e52a498,
     - target: {fileID: 486518953989235048, guid: 6693e68f506a6c944b1783fb7e52a498,
         type: 3}
         type: 3}
@@ -12156,7 +12156,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 1, y: 1}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: -0.0050063664}
+  m_AnchoredPosition: {x: 0, y: -0.0009023881}
   m_SizeDelta: {x: 0, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0, y: 1}
   m_Pivot: {x: 0, y: 1}
 --- !u!114 &1180406930876628118
 --- !u!114 &1180406930876628118

+ 3 - 3
Assets/Scripts/UI/EdirPanel/MaterialBtnItem.cs

@@ -108,9 +108,9 @@ public class MaterialBtnItem : MonoBehaviour, EventObserver
         m_ObjectValue = objValue;
         m_ObjectValue = objValue;
         MaterialObj = objValue.Object;
         MaterialObj = objValue.Object;
         m_Text.text = string.IsNullOrWhiteSpace(value.name) ? MaterialObj.name : value.name;
         m_Text.text = string.IsNullOrWhiteSpace(value.name) ? MaterialObj.name : value.name;
-        MaterialObj.transform.localPosition = m_ObjectValue.nowPos;
+        //MaterialObj.transform.localPosition = m_ObjectValue.nowPos;
-        MaterialObj.transform.localEulerAngles = m_ObjectValue.nowRot;
+        //MaterialObj.transform.localEulerAngles = m_ObjectValue.nowRot;
-        MaterialObj.transform.localScale = m_ObjectValue.nowScale;
+        //MaterialObj.transform.localScale = m_ObjectValue.nowScale;
 
 
         //m_Image.sprite = 
         //m_Image.sprite = 
     }
     }

+ 6 - 20
Assets/Scripts/UI/EdirPanel/UIEditorPanel.cs

@@ -216,6 +216,8 @@ public class UIEditorPanel : AbstractController, EventObserver
 
 
         RevocationBtn.onClick.AddListener(() =>
         RevocationBtn.onClick.AddListener(() =>
         {
         {
+            GameManager.Instance.SetPosRotScale();
+            
             if (MaterialObj == null)
             if (MaterialObj == null)
                 return;
                 return;
 
 
@@ -242,6 +244,9 @@ public class UIEditorPanel : AbstractController, EventObserver
             }
             }
             GameManager.Instance.SaveSpoitObjs();
             GameManager.Instance.SaveSpoitObjs();
             */
             */
+
+            // TODO 需要再保存一次
+            GameManager.Instance.GetPosRotScale();
             StartCoroutine(SetSpoitInfo());
             StartCoroutine(SetSpoitInfo());
         });
         });
     }
     }
@@ -281,7 +286,7 @@ public class UIEditorPanel : AbstractController, EventObserver
         saveData.Add(data);
         saveData.Add(data);
 
 
         string sendData = JsonConvert.SerializeObject(saveData);
         string sendData = JsonConvert.SerializeObject(saveData);
-        Debug.LogError(countSplit+"=="+spoitCount);
+        //Debug.LogError(countSplit+"=="+spoitCount);
         if(countSplit==spoitCount)
         if(countSplit==spoitCount)
             HttpTool.Instance.PostTest("/viewpoint/update", sendData, SaveCallBack);
             HttpTool.Instance.PostTest("/viewpoint/update", sendData, SaveCallBack);
     }
     }
@@ -320,25 +325,6 @@ public class UIEditorPanel : AbstractController, EventObserver
                 InstantiateSystem.Instance.BlueObject.WarningPopUp,
                 InstantiateSystem.Instance.BlueObject.WarningPopUp,
                 InstantiateSystem.Instance.BlueObject.SuccessText);
                 InstantiateSystem.Instance.BlueObject.SuccessText);
         CommandSystem.Instance.Send(Command);
         CommandSystem.Instance.Send(Command);
-
-        PosRotScale.PosRotScalePatchList.Clear();
-        for (int i = 0; i < GameManager.Instance.ObjsParent.childCount;i++)
-        {
-            if (i != 0)
-            {
-                for (int j = 0; j < GameManager.Instance.ObjsParent.GetChild(i).childCount; j++)
-                {
-                    for (int k = 0; k < GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).childCount; k++)
-                    {
-                        PosRotScalePatch PosRotScalePatch = new PosRotScalePatch();
-                        PosRotScalePatch.PosPatch = GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localPosition;
-                        PosRotScalePatch.RotPatch = GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localEulerAngles;
-                        PosRotScalePatch.ScalePatch = GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localScale;
-                        PosRotScale.PosRotScalePatchList.Add(PosRotScalePatch);
-                    }
-                }
-            }
-        }
     }
     }
 
 
     /// <summary>
     /// <summary>

+ 1664 - 1642
Assets/Scripts/UI/GameManager.cs

@@ -1,1642 +1,1664 @@
-using LitJson;
+using LitJson;
-using SC.XR.Unity;
+using SC.XR.Unity;
-using System;
+using System;
-using System.Collections;
+using System.Collections;
-using System.Collections.Generic;
+using System.Collections.Generic;
-using System.IO;
+using System.IO;
-using UnityEngine;
+using UnityEngine;
-using UnityEngine.UI;
+using UnityEngine.UI;
-using XRTool.Util;
+using XRTool.Util;
-
+
-/*
+/*
- * 半自动交付/自动交付
+ * 半自动交付/自动交付
- * 景点、触发范围、水晶点应保持顺序对应
+ * 景点、触发范围、水晶点应保持顺序对应
- * 当前场景下景点名称不应重复
+ * 当前场景下景点名称不应重复
- * 同一景点下素材名称不应重复
+ * 同一景点下素材名称不应重复
- * ListShowObjs/ListColliderBoxs/ListCrystals半自动时在场景中推拽,全自动时全部由代码生成
+ * ListShowObjs/ListColliderBoxs/ListCrystals半自动时在场景中推拽,全自动时全部由代码生成
- * 
+ * 
- * 新增锚点列表
+ * 新增锚点列表
- *   锚点识别图Vuforia XML和DAT文件
+ *   锚点识别图Vuforia XML和DAT文件
- *   各个锚点的位置信息
+ *   各个锚点的位置信息
- *   
+ *   
- *   每次打开都下载vuforia文件
+ *   每次打开都下载vuforia文件
- *   自动加载生成ImageTarget
+ *   自动加载生成ImageTarget
- *   
+ *   
- */
+ */
-public class GameManager : MonoSingleton<GameManager>
+public class GameManager : MonoSingleton<GameManager>
-{
+{
-    public Text text;
+    public Text text;
-    public GameObject Map;
+    public GameObject Map;
-    /// <summary>
+    /// <summary>
-    /// 景点ID与对应的素材组合
+    /// 景点ID与对应的素材组合
-    /// </summary>
+    /// </summary>
-    [SerializeField, Tooltip("景点对应的物体及景点下的素材")]
+    [SerializeField, Tooltip("景点对应的物体及景点下的素材")]
-    private Dictionary<int, ObjectValue> ObjectValues = new Dictionary<int, ObjectValue>();
+    private Dictionary<int, ObjectValue> ObjectValues = new Dictionary<int, ObjectValue>();
-    public List<ObjectValue> ColliderObjectValues = new List<ObjectValue>();
+    public List<ObjectValue> ColliderObjectValues = new List<ObjectValue>();
-    [Header("Spoit")]
+    [Header("Spoit")]
-    [Tooltip("景点对应的显示物体")]
+    [Tooltip("景点对应的显示物体")]
-    public List<Transform> ListShowObjs;
+    public List<Transform> ListShowObjs;
-    [Tooltip("景点对应的显示物体,本地添加物体")]
+    [Tooltip("景点对应的显示物体,本地添加物体")]
-    public List<Transform> ListLocalShowObjs;
+    public List<Transform> ListLocalShowObjs;
-    public bool isShowLoacalShowObjs = false;
+    public bool isShowLoacalShowObjs = false;
-    [Tooltip("景点对应的物体触发范围")]
+    [Tooltip("景点对应的物体触发范围")]
-    public List<Transform> ListColliderBoxs;
+    public List<Transform> ListColliderBoxs;
-
+
-    private List<MeshRenderer> ListColiderBoxs_Mesh;
+    private List<MeshRenderer> ListColiderBoxs_Mesh;
-    [Tooltip("景点对应的水晶点")]
+    [Tooltip("景点对应的水晶点")]
-    public List<Transform> ListCrystals;
+    public List<Transform> ListCrystals;
-    [Tooltip("景点对应的显示物体父物体")]
+    [Tooltip("景点对应的显示物体父物体")]
-    public Transform ObjsParent;
+    public Transform ObjsParent;
-    [Tooltip("触发器父物体")]
+    [Tooltip("触发器父物体")]
-    public Transform CollidersParent;
+    public Transform CollidersParent;
-    [Tooltip("水晶点父物体")]
+    [Tooltip("水晶点父物体")]
-    public Transform CrystalsParent;
+    public Transform CrystalsParent;
-    [Tooltip("锚点父物体")]
+    [Tooltip("锚点父物体")]
-    public Transform AnchorsParent;
+    public Transform AnchorsParent;
-    public GameObject ColliderItem;
+    public GameObject ColliderItem;
-    public GameObject CrystalItem;
+    public GameObject CrystalItem;
-    [Space(20)]
+    [Space(20)]
-    [Tooltip("是否显示路径")]
+    [Tooltip("是否显示路径")]
-    public bool IsShowLuJIng = true;
+    public bool IsShowLuJIng = true;
-    [Tooltip("是否为编辑模式")]
+    [Tooltip("是否为编辑模式")]
-    public bool IsEditor = true;
+    public bool IsEditor = true;
-    [Tooltip("是否是全自动显示景点")]
+    [Tooltip("是否是全自动显示景点")]
-    public bool IsAuto = true;
+    public bool IsAuto = true;
-    [SerializeField, Tooltip("路径控制器")]
+    [SerializeField, Tooltip("路径控制器")]
-    private RouteCtr RouteCtr;
+    private RouteCtr RouteCtr;
-    [SerializeField, Tooltip("素材编辑器")]
+    [SerializeField, Tooltip("素材编辑器")]
-    private EditorPanel m_EditorPanel;
+    private EditorPanel m_EditorPanel;
-    [SerializeField, Tooltip("计算人物在地图上的位置")]
+    [SerializeField, Tooltip("计算人物在地图上的位置")]
-    [Header("MinMap")]
+    [Header("MinMap")]
-    private CalMap m_CalMap;
+    private CalMap m_CalMap;
-    [SerializeField, Tooltip("小地图信息")]
+    [SerializeField, Tooltip("小地图信息")]
-    private MinMap m_MinMap;
+    private MinMap m_MinMap;
-    [Header("Setting")]
+    [Header("Setting")]
-    [SerializeField, Tooltip("设置面板")]
+    [SerializeField, Tooltip("设置面板")]
-    private SettingPanel m_SettingPanel;
+    private SettingPanel m_SettingPanel;
-    [SerializeField, Tooltip("编辑器面板")]
+    [SerializeField, Tooltip("编辑器面板")]
-    private Transform m_EditorCanvas;
+    private Transform m_EditorCanvas;
-    [SerializeField, Tooltip("设置按钮")]
+    [SerializeField, Tooltip("设置按钮")]
-    private Transform m_SetBtn;
+    private Transform m_SetBtn;
-
+
-    [Header("地图比例")]
+    [Header("地图比例")]
-    public Transform PointA;
+    public Transform PointA;
-    public Transform PointB;
+    public Transform PointB;
-    public Transform PointC;
+    public Transform PointC;
-    public Transform PointD;
+    public Transform PointD;
-    public bool isStart; // 场景四个点已经确定
+    public bool isStart; // 场景四个点已经确定
-
+
-    public Vector2 WebMapSize;
+    public Vector2 WebMapSize;
-    public Vector2 MapSize;
+    public Vector2 MapSize;
-    public Vector2 MinMapSize = new Vector2(320, 135);
+    public Vector2 MinMapSize = new Vector2(320, 135);
-    public string MapPicUrl;
+    public string MapPicUrl;
-
+
-    [Header("展厅")]
+    [Header("展厅")]
-    public GameObject MRZhanTing;
+    public GameObject MRZhanTing;
-    public bool isPlayMRZhanTing;
+    public bool isPlayMRZhanTing;
-    public IrobotMove m_IroBot;
+    public IrobotMove m_IroBot;
-    [Header("Player")]
+    [Header("Player")]
-    public PlayerTrigger Player;
+    public PlayerTrigger Player;
-    [Header("Head")]
+    [Header("Head")]
-    public Transform m_head;
+    public Transform m_head;
-    [Header("虚拟导游")]
+    [Header("虚拟导游")]
-    public List<IrobotMove> Irobots;
+    public List<IrobotMove> Irobots;
-    /// <summary>
+    /// <summary>
-    /// 是否在触发区域内
+    /// 是否在触发区域内
-    /// </summary>
+    /// </summary>
-    private bool m_IsTriggerExiting;
+    private bool m_IsTriggerExiting;
-    /// <summary>
+    /// <summary>
-    /// 是否在触发区域内
+    /// 是否在触发区域内
-    /// </summary>
+    /// </summary>
-    public bool IsTriggerExiting
+    public bool IsTriggerExiting
-    {
+    {
-        get { return m_IsTriggerExiting; }
+        get { return m_IsTriggerExiting; }
-        set { m_IsTriggerExiting = value; }
+        set { m_IsTriggerExiting = value; }
-    }
+    }
-    /// <summary>
+    /// <summary>
-    /// 是否可以开始编辑素材
+    /// 是否可以开始编辑素材
-    /// </summary>
+    /// </summary>
-    private bool m_IsStartEditor;
+    private bool m_IsStartEditor;
-    /// <summary>
+    /// <summary>
-    /// 是否可以开始编辑素材
+    /// 是否可以开始编辑素材
-    /// </summary>
+    /// </summary>
-    public bool IsStartEditor
+    public bool IsStartEditor
-    {
+    {
-        get { return m_IsStartEditor; }
+        get { return m_IsStartEditor; }
-        set { m_IsStartEditor = value; }
+        set { m_IsStartEditor = value; }
-    }
+    }
-    /// <summary>
+    /// <summary>
-    /// 素材加载完成,素材prefab生成完成,开始进入运行状态
+    /// 素材加载完成,素材prefab生成完成,开始进入运行状态
-    /// </summary>
+    /// </summary>
-    public bool m_IsRuning;
+    public bool m_IsRuning;
-    /// <summary>
+    /// <summary>
-    /// 素材加载完成,素材prefab生成完成,开始进入运行状态
+    /// 素材加载完成,素材prefab生成完成,开始进入运行状态
-    /// </summary>
+    /// </summary>
-    public bool IsRuning
+    public bool IsRuning
-    {
+    {
-        get { return m_IsRuning; }
+        get { return m_IsRuning; }
-        set { m_IsRuning = value; }
+        set { m_IsRuning = value; }
-    }
+    }
-
+
-    /// <summary>
+    /// <summary>
-    /// 当前触发物体的下标
+    /// 当前触发物体的下标
-    /// </summary>
+    /// </summary>
-    private int m_SpoitIndex;
+    private int m_SpoitIndex;
-    /// <summary>
+    /// <summary>
-    /// 当前触发物体的下标
+    /// 当前触发物体的下标
-    /// </summary>
+    /// </summary>
-    public int SpoitIndex
+    public int SpoitIndex
-    {
+    {
-        get { return m_SpoitIndex; }
+        get { return m_SpoitIndex; }
-        set { m_SpoitIndex = value; }
+        set { m_SpoitIndex = value; }
-    }
+    }
-
+
-    /// <summary>
+    /// <summary>
-    /// 当前场景数据
+    /// 当前场景数据
-    /// </summary>
+    /// </summary>
-    public SceneValue m_SceneValue;
+    public SceneValue m_SceneValue;
-    /// <summary>
+    /// <summary>
-    /// 当前场景数据
+    /// 当前场景数据
-    /// </summary>
+    /// </summary>
-    public SceneValue SceneValue
+    public SceneValue SceneValue
-    {
+    {
-        get { return m_SceneValue; }
+        get { return m_SceneValue; }
-        set { m_SceneValue = value; }
+        set { m_SceneValue = value; }
-    }
+    }
-    /// <summary>
+    /// <summary>
-    /// 当前场景中的景点信息
+    /// 当前场景中的景点信息
-    /// </summary>
+    /// </summary>
-    private List<SpoitValue> m_SpoitValues;
+    private List<SpoitValue> m_SpoitValues;
-    /// <summary>
+    /// <summary>
-    /// 当前场景中的景点信息
+    /// 当前场景中的景点信息
-    /// </summary>
+    /// </summary>
-    public List<SpoitValue> SpoitValues
+    public List<SpoitValue> SpoitValues
-    {
+    {
-        get { return m_SpoitValues; }
+        get { return m_SpoitValues; }
-        set { m_SpoitValues = value; }
+        set { m_SpoitValues = value; }
-    }
+    }
-    /// <summary>
+    /// <summary>
-    /// 景点详情数据
+    /// 景点详情数据
-    /// </summary>
+    /// </summary>
-    private Dictionary<int, SpoitValueDetail> m_SpoitsValueDetail;
+    private Dictionary<int, SpoitValueDetail> m_SpoitsValueDetail;
-    /// <summary>
+    /// <summary>
-    /// 景点详情数据
+    /// 景点详情数据
-    /// </summary>
+    /// </summary>
-    public Dictionary<int, SpoitValueDetail> SpoitsValueDetail
+    public Dictionary<int, SpoitValueDetail> SpoitsValueDetail
-    {
+    {
-        get { return m_SpoitsValueDetail; }
+        get { return m_SpoitsValueDetail; }
-        set { m_SpoitsValueDetail = value; }
+        set { m_SpoitsValueDetail = value; }
-    }
+    }
-
+
-    public UIAnchorsPanel m_UIAnchorsPanel;
+    public UIAnchorsPanel m_UIAnchorsPanel;
-
+
-    private Dictionary<Anchor, MeshRenderer> m_AnchorValue;
+    private Dictionary<Anchor, MeshRenderer> m_AnchorValue;
-    public Dictionary<Anchor, MeshRenderer> AnchorValue
+    public Dictionary<Anchor, MeshRenderer> AnchorValue
-    {
+    {
-        get { return m_AnchorValue; }
+        get { return m_AnchorValue; }
-        set { m_AnchorValue = value; }
+        set { m_AnchorValue = value; }
-    }
+    }
-
+
-    private Dictionary<Anchor, GameObject> m_AnchorChild;
+    private Dictionary<Anchor, GameObject> m_AnchorChild;
-
+
-    public Dictionary<Anchor,GameObject> AnchorChild
+    public Dictionary<Anchor,GameObject> AnchorChild
-    {
+    {
-        get { return m_AnchorChild; }
+        get { return m_AnchorChild; }
-        set { m_AnchorChild = value; }
+        set { m_AnchorChild = value; }
-    }
+    }
-
+
-    public Toggle EditorToggle;
+    public Toggle EditorToggle;
-    private void Awake()
+    private void Awake()
-    {
+    {
-        
+        
-       // Debug.unityLogger.logEnabled = false;
+       // Debug.unityLogger.logEnabled = false;
-    }
+    }
-
+
-    private void Start()
+    private void Start()
-    {
+    {
-        this.gameObject.AddComponent<TimerMgr>();
+        this.gameObject.AddComponent<TimerMgr>();
-        // PlayerPrefs.DeleteAll();
+        // PlayerPrefs.DeleteAll();
-        isStart = false;
+        isStart = false;
-         m_SpoitsValueDetail = new Dictionary<int, SpoitValueDetail>();
+         m_SpoitsValueDetail = new Dictionary<int, SpoitValueDetail>();
-        m_AnchorValue = new Dictionary<Anchor, MeshRenderer>();
+        m_AnchorValue = new Dictionary<Anchor, MeshRenderer>();
-        m_AnchorChild = new Dictionary<Anchor, GameObject>();
+        m_AnchorChild = new Dictionary<Anchor, GameObject>();
-        SceneValue = null;
+        SceneValue = null;
-        m_IsStartEditor = false;
+        m_IsStartEditor = false;
-        m_IsRuning = false;
+        m_IsRuning = false;
-        m_SetBtn.gameObject.SetActive(false);
+        m_SetBtn.gameObject.SetActive(false);
-        //CalMapSize();
+        //CalMapSize();
-        SpoitIndex = -1;
+        SpoitIndex = -1;
-        SpoitValues = new List<SpoitValue>();
+        SpoitValues = new List<SpoitValue>();
-        if (m_EditorPanel == null)
+        if (m_EditorPanel == null)
-        {
+        {
-            m_EditorPanel = GameObject.FindObjectOfType<EditorPanel>();
+            m_EditorPanel = GameObject.FindObjectOfType<EditorPanel>();
-        }
+        }
-        
+        
-        if (!IsAuto)
+        if (!IsAuto)
-        {
+        {
-            //GetObjectValue();
+            //GetObjectValue();
-            //CreateSpoitValue();
+            //CreateSpoitValue();
-        }
+        }
-        else
+        else
-        {
+        {
-            ListShowObjs = new List<Transform>();
+            ListShowObjs = new List<Transform>();
-            ListColliderBoxs = new List<Transform>();
+            ListColliderBoxs = new List<Transform>();
-            ListColiderBoxs_Mesh = new List<MeshRenderer>();
+            ListColiderBoxs_Mesh = new List<MeshRenderer>();
-            ListCrystals = new List<Transform>();
+            ListCrystals = new List<Transform>();
-          //  ListLocalShowObjs = new List<Transform>();
+          //  ListLocalShowObjs = new List<Transform>();
-        }
+        }
-        m_MinMap.gameObject.SetActive(false);
+        m_MinMap.gameObject.SetActive(false);
-        Map.SetActive(false);
+        Map.SetActive(false);
-    }
+    }
-
+
-    private void LateUpdate()
+    private void LateUpdate()
-    {
+    {
-        // if (API_GSXR_Slam.GSXR_Get_Head() != null && m_IsRuning)
+        // if (API_GSXR_Slam.GSXR_Get_Head() != null && m_IsRuning)
-        //  {
+        //  {
-        m_SetBtn.transform.LookAt(OpenXRCamera.Instance.head);
+        m_SetBtn.transform.LookAt(OpenXRCamera.Instance.head);
-        m_SetBtn.transform.localEulerAngles = new Vector3(0, m_SetBtn.transform.localEulerAngles.y+180, 0);
+        m_SetBtn.transform.localEulerAngles = new Vector3(0, m_SetBtn.transform.localEulerAngles.y+180, 0);
-            //m_SetBtn.transform.position = API_GSXR_Slam.GSXR_Get_Head().localPosition + Player.transform.forward * 1.3f+ new Vector3(0, 1f, 0);
+            //m_SetBtn.transform.position = API_GSXR_Slam.GSXR_Get_Head().localPosition + Player.transform.forward * 1.3f+ new Vector3(0, 1f, 0);
-            //m_SetBtn.transform.localPosition = API_GSXR_Slam.GSXR_Get_Head().localPosition + Player.transform.forward * 1.3f + new Vector3(0, 1f, 0);
+            //m_SetBtn.transform.localPosition = API_GSXR_Slam.GSXR_Get_Head().localPosition + Player.transform.forward * 1.3f + new Vector3(0, 1f, 0);
-            m_SetBtn.transform.position = OpenXRCamera.Instance.head.position + Player.transform.forward * 1.3f + new Vector3(-0.2f, 1f, 0);
+            m_SetBtn.transform.position = OpenXRCamera.Instance.head.position + Player.transform.forward * 1.3f + new Vector3(-0.2f, 1f, 0);
-      //  }
+      //  }
-    }
+    }
-
+
-    public void Init()
+    public void Init()
-    {
+    {
-
+
-    }
+    }
-
+
-    private void InitCrystals()
+    private void InitCrystals()
-    {
+    {
-        for (int i = 0; i < ListCrystals.Count; i++)
+        for (int i = 0; i < ListCrystals.Count; i++)
-        {
+        {
-            ListCrystals[i].gameObject.SetActive(true);
+            ListCrystals[i].gameObject.SetActive(true);
-        }
+        }
-    }
+    }
-
+
-    private void InitBoxColliders()
+    private void InitBoxColliders()
-    {
+    {
-        for (int i = 0; i < ListColliderBoxs.Count; i++)
+        for (int i = 0; i < ListColliderBoxs.Count; i++)
-        {
+        {
-            ListColliderBoxs[i].gameObject.SetActive(true);
+            ListColliderBoxs[i].gameObject.SetActive(true);
-        }
+        }
-
+
-    }
+    }
-
+
-    public void IntoScene()
+    public void IntoScene()
-    {
+    {
-        Map.SetActive(true);
+        Map.SetActive(true);
-        //GameObject.Instantiate(Resources.Load<GameObject>("ARCamera"));
+        //GameObject.Instantiate(Resources.Load<GameObject>("ARCamera"));
-        //ImageTargetManager.Instance.LoadVuforiaDat();
+        //ImageTargetManager.Instance.LoadVuforiaDat();
-        //API_GSXR_Slam.GSXR_Get_Head().localPosition = new Vector3(23.57f, 2.5f, 16.74f);
+        //API_GSXR_Slam.GSXR_Get_Head().localPosition = new Vector3(23.57f, 2.5f, 16.74f);
-        //API_GSXR_Slam.GSXR_Get_Head().localEulerAngles = new Vector3(0, -35.9f, 0);
+        //API_GSXR_Slam.GSXR_Get_Head().localEulerAngles = new Vector3(0, -35.9f, 0);
-        StartCoroutine(StartScene(isPlayMRZhanTing));
+        StartCoroutine(StartScene(isPlayMRZhanTing));
-        HttpSocket.Instance.SendIpToElectric();
+        HttpSocket.Instance.SendIpToElectric();
-    }
+    }
-    IEnumerator StartScene( bool isPlayMRZhanTing)
+    IEnumerator StartScene( bool isPlayMRZhanTing)
-    {
+    {
-        yield return new WaitForSeconds(0.5f);
+        yield return new WaitForSeconds(0.5f);
-        if(isPlayMRZhanTing)
+        if(isPlayMRZhanTing)
-        {
+        {
-           
+           
-            //if (!string.IsNullOrWhiteSpace(DataManager.Instance.CurrentScene.sandTable))
+            //if (!string.IsNullOrWhiteSpace(DataManager.Instance.CurrentScene.sandTable))
-            //{
+            //{
-            MRZhanTing.gameObject.SetActive(true);
+            MRZhanTing.gameObject.SetActive(true);
-            MRZhanTing.transform.position = API_GSXR_Slam.GSXR_Get_Head().position + API_GSXR_Slam.GSXR_Get_Head().forward + new Vector3(0, -0.7f, 0);
+            MRZhanTing.transform.position = API_GSXR_Slam.GSXR_Get_Head().position + API_GSXR_Slam.GSXR_Get_Head().forward + new Vector3(0, -0.7f, 0);
-            MRZhanTing.transform.localEulerAngles = new Vector3(0, API_GSXR_Slam.GSXR_Get_Head().eulerAngles.y, 0);
+            MRZhanTing.transform.localEulerAngles = new Vector3(0, API_GSXR_Slam.GSXR_Get_Head().eulerAngles.y, 0);
-            yield return new WaitForSeconds(18f);
+            yield return new WaitForSeconds(18f);
-            MRZhanTing.gameObject.SetActive(false);
+            MRZhanTing.gameObject.SetActive(false);
-            //}
+            //}
-        }
+        }
-        m_SettingPanel.gameObject.SetActive(true);
+        m_SettingPanel.gameObject.SetActive(true);
-        m_EditorPanel.Init();
+        m_EditorPanel.Init();
-        m_SettingPanel.Init();
+        m_SettingPanel.Init();
-        if (RouteCtr.CurrentPoints.Count > 0)
+        if (RouteCtr.CurrentPoints.Count > 0)
-        {
+        {
-            Player.MovePoints = RouteCtr.CurrentPoints;
+            Player.MovePoints = RouteCtr.CurrentPoints;
-            //判断选择那个虚拟导游
+            //判断选择那个虚拟导游
-            //int id = ChooseIroBot();
+            //int id = ChooseIroBot();
-
+
-            //if (id < 3)
+            //if (id < 3)
-            //{
+            //{
-            //m_IroBot = Irobots[id - 1];
+            //m_IroBot = Irobots[id - 1];
-            m_IroBot.gameObject.SetActive(true);
+            m_IroBot.gameObject.SetActive(true);
-            m_IroBot.Points = RouteCtr.CurrentPoints;
+            m_IroBot.Points = RouteCtr.CurrentPoints;
-            yield return new WaitForSeconds(5f);
+            yield return new WaitForSeconds(5f);
-            //}
+            //}
-        }
+        }
-        IsRuning = true;
+        IsRuning = true;
-        m_SetBtn.gameObject.SetActive(true);
+        m_SetBtn.gameObject.SetActive(true);
-        InitCrystals();
+        InitCrystals();
-        InitBoxColliders();
+        InitBoxColliders();
-
+    }
-    }
+
-
+
-
+    private int ChooseIroBot()
-    private int ChooseIroBot()
+    {
-    {
+        int id = 3;
-        int id = 3;
+        var navlines = DataManager.Instance.CurrentScene.navLines;
-        var navlines = DataManager.Instance.CurrentScene.navLines;
+        if (navlines.Count > 0)
-        if (navlines.Count > 0)
+        {
-        {
+            id = navlines[0].guideMod;
-            id = navlines[0].guideMod;
+        }
-        }
+        return id;
-        return id;
+    }
-    }
+
-
+    /// <summary>
-    /// <summary>
+    /// 若为半自动显示素材,需要获取景点物体来为ObjectValues赋值
-    /// 若为半自动显示素材,需要获取景点物体来为ObjectValues赋值
+    /// </summary>
-    /// </summary>
+    private void GetObjectValue()
-    private void GetObjectValue()
+    {
-    {
+        //for (int i = 0; i < ListShowObjs.Count; i++)
-        //for (int i = 0; i < ListShowObjs.Count; i++)
+        //{
-        //{
+        //    var spoit = ListShowObjs[i];
-        //    var spoit = ListShowObjs[i];
+        //    List<ObjectValue> values = new List<ObjectValue>();
-        //    List<ObjectValue> values = new List<ObjectValue>();
+        //    ObjectValue objectValue = new ObjectValue(i, -1, spoit.name, spoit.gameObject, spoit.localPosition, spoit.localEulerAngles, spoit.localScale);
-        //    ObjectValue objectValue = new ObjectValue(i, -1, spoit.name, spoit.gameObject, spoit.localPosition, spoit.localEulerAngles, spoit.localScale);
+        //    var editors = spoit.GetComponentsInChildren<EditorEventHandler>();
-        //    var editors = spoit.GetComponentsInChildren<EditorEventHandler>();
+        //    for (int j = 1; j < editors.Length; j++)
-        //    for (int j = 1; j < editors.Length; j++)
+        //    {
-        //    {
+        //        var obj = editors[j];
-        //        var obj = editors[j];
+        //        ObjectValue value = new ObjectValue(j, i, obj.name, obj.gameObject, obj.transform.localPosition, obj.transform.localEulerAngles, obj.transform.localScale);
-        //        ObjectValue value = new ObjectValue(j, i, obj.name, obj.gameObject, obj.transform.localPosition, obj.transform.localEulerAngles, obj.transform.localScale);
+        //        objectValue.ChildrenObj.Add(value);
-        //        objectValue.ChildrenObj.Add(value);
+        //    }
-        //    }
+        //    values.Add(objectValue);
-        //    values.Add(objectValue);
+        //    ObjectValues.Add(i, values);
-        //    ObjectValues.Add(i, values);
+        //}
-        //}
+    }
-    }
+
-
+    /// <summary>
-    /// <summary>
+    /// 半自动时创建景点信息
-    /// 半自动时创建景点信息
+    /// </summary>
-    /// </summary>
+    //private void CreateSpoitValue()
-    //private void CreateSpoitValue()
+    //{
-    //{
+    //    if (SpoitValues == null)
-    //    if (SpoitValues == null)
+    //    {
-    //    {
+    //        SpoitValues = new List<SpoitValue>();
-    //        SpoitValues = new List<SpoitValue>();
+    //    }
-    //    }
+    //    SpoitValues.Clear();
-    //    SpoitValues.Clear();
+
-
+    //    foreach (int id in ObjectValues.Keys)
-    //    foreach (int id in ObjectValues.Keys)
+    //    {
-    //    {
+    //        var item = ObjectValues[id];
-    //        var item = ObjectValues[id];
+
-
+    //        SpoitValue spoit = new SpoitValue();
-    //        SpoitValue spoit = new SpoitValue();
+    //        spoit.id = item[0].ID;
-    //        spoit.id = item[0].ID;
+    //        spoit.name = item[0].matName;
-    //        spoit.name = item[0].matName;
+    //        for (int i = 0; i < item.Count; i++)
-    //        for (int i = 0; i < item.Count; i++)
+    //        {
-    //        {
+    //            var objs = item[i];
-    //            var objs = item[i];
+    //            MaterialObl materialObl = new MaterialObl();
-    //            MaterialObl materialObl = new MaterialObl();
+    //            materialObl.id = objs.ID;
-    //            materialObl.id = objs.ID;
+    //            materialObl.name = objs.matName;
-    //            materialObl.name = objs.matName;
+    //            materialObl.type = 0;
-    //            materialObl.type = 0;
+    //            OjectTransform ojectTransform = new OjectTransform(objs.Object.transform.localPosition, objs.Object.transform.localEulerAngles, objs.Object.transform.localScale);
-    //            OjectTransform ojectTransform = new OjectTransform(objs.Object.transform.localPosition, objs.Object.transform.localEulerAngles, objs.Object.transform.localScale);
+
-
+    //            for (int m = 0; m < objs.ChildrenObj.Count; m++)
-    //            for (int m = 0; m < objs.ChildrenObj.Count; m++)
+    //            {
-    //            {
+    //                var obj = objs.ChildrenObj[i];
-    //                var obj = objs.ChildrenObj[i];
+    //                MaterialObjValue mat = new MaterialObjValue();
-    //                MaterialObjValue mat = new MaterialObjValue();
+    //                mat.name = obj.matName;
-    //                mat.name = obj.matName;
+    //                mat.type = 0;
-    //                mat.type = 0;
+    //                mat.objectTransform = new OjectTransform(obj.Object.transform.localPosition, obj.Object.transform.localEulerAngles, obj.Object.transform.localScale);
-    //                mat.objectTransform = new OjectTransform(obj.Object.transform.localPosition, obj.Object.transform.localEulerAngles, obj.Object.transform.localScale);
+    //                materialObl.materialList.Add(mat);
-    //                materialObl.materialList.Add(mat);
+    //            }
-    //            }
+    //            spoit.material.Add(materialObl);
-    //            spoit.material.Add(materialObl);
+    //            SpoitValues.Add(spoit);
-    //            SpoitValues.Add(spoit);
+    //        }
-    //        }
+    //    }
-    //    }
+    //}
-    //}
+
-
+
-
+    #region 设置功能
-    #region 设置功能
+
-
+    public void OnEditorBtnValueChanged(bool ison)
-    public void OnEditorBtnValueChanged(bool ison)
+    {
-    {
+        m_EditorCanvas.gameObject.SetActive(ison);
-        m_EditorCanvas.gameObject.SetActive(ison);
+        m_IsStartEditor = ison;
-        m_IsStartEditor = ison;
+
-
+        for (int i = 0; i < ListColiderBoxs_Mesh.Count; i++)
-        for (int i = 0; i < ListColiderBoxs_Mesh.Count; i++)
+        {
-        {
+            ListColiderBoxs_Mesh[i].enabled = ison;
-            ListColiderBoxs_Mesh[i].enabled = ison;
+        }
-        }
+
-
+        if (ison)
-        if (ison)
+        {
-        {
+            GetPosRotScale(); // 获取所有物体位置旋转缩放
-            m_EditorCanvas.position = OpenXRCamera.Instance.head.position + Player.transform.forward + new Vector3(0, 0.5f, 0);
+            m_EditorCanvas.position = OpenXRCamera.Instance.head.position + Player.transform.forward + new Vector3(0, 0.5f, 0);
-            m_EditorCanvas.eulerAngles = new Vector3(0, OpenXRCamera.Instance.head.eulerAngles.y, 0);
+            m_EditorCanvas.eulerAngles = new Vector3(0, OpenXRCamera.Instance.head.eulerAngles.y, 0);
-
+
-            CommandSystem.Instance.Send( new EditorSettingCommand(true){ } );
+            CommandSystem.Instance.Send( new EditorSettingCommand(true){ } );
-            CommandSystem.Instance.Send( new Patch_VideoCommand(true){ } );
+            CommandSystem.Instance.Send( new Patch_VideoCommand(true){ } );
-        }
+        }
-        else
+        else
-        {
+        {
-            m_EditorCanvas.position = OpenXRCamera.Instance.head.position + new Vector3(0, 100, 0);
+            SetPosRotScale();// 设置所有物体位置旋转缩放
-
+            m_EditorCanvas.position = OpenXRCamera.Instance.head.position + new Vector3(0, 100, 0);
-            if (SpoitIndex >= 0 && !IsTriggerExiting)
+
-            {
+            if (SpoitIndex >= 0 && !IsTriggerExiting)
-                ListShowObjs[SpoitIndex].gameObject.SetActive(false);
+            {
-                if (isShowLoacalShowObjs)
+                ListShowObjs[SpoitIndex].gameObject.SetActive(false);
-                    ListLocalShowObjs[SpoitIndex].gameObject.SetActive(false);
+                if (isShowLoacalShowObjs)
-                ListCrystals[SpoitIndex].gameObject.SetActive(true);
+                    ListLocalShowObjs[SpoitIndex].gameObject.SetActive(false);
-                m_EditorPanel.ClosePanel();
+                ListCrystals[SpoitIndex].gameObject.SetActive(true);
-                SpoitIndex = -1;
+                m_EditorPanel.ClosePanel();
-            }
+                SpoitIndex = -1;
-            CommandSystem.Instance.Send( new EditorSettingCommand(false){ } );
+            }
-            CommandSystem.Instance.Send( new Patch_VideoCommand(false){ } );
+            CommandSystem.Instance.Send( new EditorSettingCommand(false){ } );
-        }
+            CommandSystem.Instance.Send( new Patch_VideoCommand(false){ } );
-
+        }
-    }
+
-
+    }
-    public void OnSettingBtnValueChanged(bool ison)
+
-    {
+    public void OnSettingBtnValueChanged(bool ison)
-        m_SettingPanel.gameObject.SetActive(ison);
+    {
-        if (ison)
+        m_SettingPanel.gameObject.SetActive(ison);
-        {
+        if (ison)
-            Debug.Log(OpenXRCamera.Instance.head.forward);
+        {
-            m_SettingPanel.transform.position = OpenXRCamera.Instance.head.position + Player.transform.forward;
+            Debug.Log(OpenXRCamera.Instance.head.forward);
-            m_SettingPanel.transform.eulerAngles = new Vector3(0, OpenXRCamera.Instance.head.eulerAngles.y, 0);
+            m_SettingPanel.transform.position = OpenXRCamera.Instance.head.position + Player.transform.forward;
-        }
+            m_SettingPanel.transform.eulerAngles = new Vector3(0, OpenXRCamera.Instance.head.eulerAngles.y, 0);
-    }
+        }
-
+    }
-    public void OnAnchorBtnValueChanged(bool ison)
+
-    {
+    public void OnAnchorBtnValueChanged(bool ison)
-        foreach (var item in m_AnchorValue)
+    {
-        {
+        foreach (var item in m_AnchorValue)
-            item.Value.enabled = ison;
+        {
-        }
+            item.Value.enabled = ison;
-
+        }
-        //foreach (var item in m_AnchorChild)
+
-        //{
+        //foreach (var item in m_AnchorChild)
-        //    item.Value.SetActive(ison);
+        //{
-        //}
+        //    item.Value.SetActive(ison);
-
+        //}
-        if(ison)
+
-        {
+        if(ison)
-            m_UIAnchorsPanel.transform.position = OpenXRCamera.Instance.head.position + Player.transform.forward + new Vector3(0, 0.5f, 0);
+        {
-            m_UIAnchorsPanel.transform.eulerAngles = new Vector3(0, OpenXRCamera.Instance.head.eulerAngles.y, 0);
+            m_UIAnchorsPanel.transform.position = OpenXRCamera.Instance.head.position + Player.transform.forward + new Vector3(0, 0.5f, 0);
-        }
+            m_UIAnchorsPanel.transform.eulerAngles = new Vector3(0, OpenXRCamera.Instance.head.eulerAngles.y, 0);
-        else
+        }
-        {
+        else
-            m_UIAnchorsPanel.transform.position = OpenXRCamera.Instance.head.position + new Vector3(0, 100, 0);
+        {
-        }
+            m_UIAnchorsPanel.transform.position = OpenXRCamera.Instance.head.position + new Vector3(0, 100, 0);
-
+        }
-    }
+
-    #endregion
+    }
-
+    
-    #region 获取景点信息--素材编辑模式下
+    public void GetPosRotScale()
-    /// <summary>
+    {
-    /// 获取当前景点对应的物体信息
+        PosRotScale.PosRotScalePatchList.Clear();
-    /// </summary>
+        for (int i = 0; i < GameManager.Instance.ObjsParent.childCount; i++)
-    /// <param name="spoitID"></param>
+        {
-    /// <returns></returns>
+            if (i != 0)
-    public ObjectValue GetSpoitObjs(int spoitID)
+            {
-    {
+                for (int j = 0; j < GameManager.Instance.ObjsParent.GetChild(i).childCount; j++)
-        if (ObjectValues.ContainsKey(spoitID))
+                {
-        {
+                    for (int k = 0; k < GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).childCount; k++)
-            return ObjectValues[spoitID];
+                    {
-        }
+                        PosRotScalePatch PosRotScalePatch = new PosRotScalePatch();
-        else
+                        PosRotScalePatch.PosPatch = GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localPosition;
-        {
+                        PosRotScalePatch.RotPatch = GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localEulerAngles;
-            return null;
+                        PosRotScalePatch.ScalePatch = GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localScale;
-        }
+                        PosRotScale.PosRotScalePatchList.Add(PosRotScalePatch);
-
+                    }
-    }
+                }
-    /// <summary>
+            }
-    /// 初始化数据
+        }
-    /// 素材编辑模式下
+    }
-    /// </summary>
+    #endregion
-    /// <param name="matObjs"></param>
+
-    public void InitSpoitObjs()
+    #region 获取景点信息--素材编辑模式下
-    {
+    /// <summary>
-        m_EditorPanel.InitObjTransForm();
+    /// 获取当前景点对应的物体信息
-    }
+    /// </summary>
-    /// <summary>
+    /// <param name="spoitID"></param>
-    /// 保存数据
+    /// <returns></returns>
-    /// 素材编辑模式下
+    public ObjectValue GetSpoitObjs(int spoitID)
-    /// </summary>
+    {
-    /// <param name="matObjs"></param>
+        if (ObjectValues.ContainsKey(spoitID))
-    public void SaveSpoitObjs()
+        {
-    {
+            return ObjectValues[spoitID];
-        m_EditorPanel.SaveObjTransForm();
+        }
-    }
+        else
-
+        {
-    public void SaveAnchorObjs( string name)
+            return null;
-    {
+        }
-        foreach (var item in AnchorValue) // 保存所有锚点
+
-        {
+    }
-            item.Key.objectTransform.SavePos(item.Value.transform.localPosition, item.Value.transform.localEulerAngles, item.Value.transform.localScale);
+    /// <summary>
-        }
+    /// 初始化数据
-
+    /// 素材编辑模式下
-        // 锚点发送后台
+    /// </summary>
-        m_UIAnchorsPanel.SaveAnchors(name);
+    /// <param name="matObjs"></param>
-
+    public void InitSpoitObjs()
-    }
+    {
-    #endregion
+        m_EditorPanel.InitObjTransForm();
-
+    }
-    #region 创建水晶点、触发器范围、显示物体
+    /// <summary>
-
+    /// 保存数据
-    public void CreateScene(SceneValue scene)
+    /// 素材编辑模式下
-    {
+    /// </summary>
-        SceneValue = scene;
+    /// <param name="matObjs"></param>
-        if (m_MinMap.Map.sprite == null)
+    public void SaveSpoitObjs()
-        {
+    {
-            GetMinMap(scene );
+        m_EditorPanel.SaveObjTransForm();
-        }
+    }
-        else
+
-        {
+    public void SaveAnchorObjs( string name)
-            StartCreateScene(scene);
+    {
-        }
+        foreach (var item in AnchorValue) // 保存所有锚点
-        Invoke("MoveScenePatch",1);
+        {
-    }
+            item.Key.objectTransform.SavePos(item.Value.transform.localPosition, item.Value.transform.localEulerAngles, item.Value.transform.localScale);
-    private void MoveScenePatch()
+        }
-    {
+
-        Vector3 temp = ObjsParent.parent.localPosition;
+        // 锚点发送后台
-        temp.z += MapSize.y;
+        m_UIAnchorsPanel.SaveAnchors(name);
-        ObjsParent.parent.localPosition = temp;
+
-    }
+    }
-    private void StartCreateScene(SceneValue scene)
+    #endregion
-    {
+
-        if (scene.navLines != null && scene.navLines.Count > 0)
+    #region 创建水晶点、触发器范围、显示物体
-            SetRouteValue(scene.navLines);
+
-        else
+    public void CreateScene(SceneValue scene)
-            Debug.LogError(" 当前场景未设置路径");
+    {
-
+        SceneValue = scene;
-        if (scene.listSpoit != null && scene.listSpoit.Count > 0)
+        if (m_MinMap.Map.sprite == null)
-            SetSpoitValue(scene.listSpoit);
+        {
-        else
+            GetMinMap(scene );
-            Debug.LogError(" 当前场景未创建景点");
+        }
-
+        else
-        if (scene.listPicture != null && scene.listPicture.Count > 0)
+        {
-            SetAnchor(scene.listPicture);
+            StartCreateScene(scene);
-        else
+        }
-            Debug.LogError(" 当前场景未创建锚点");
+        Invoke("MoveScenePatch",1);
-        //设置小地图景点
+    }
-      //  m_CalMap.SettingMapPoint(ListCrystals);
+    private void MoveScenePatch()
-
+    {
-        UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.download);
+        Vector3 temp = ObjsParent.parent.localPosition;
-        DownloadManager.Instance.UpdataData();
+        temp.z += MapSize.y;
-    }
+        ObjsParent.parent.localPosition = temp;
-    /// <summary>
+    }
-    /// 获取小地图
+    private void StartCreateScene(SceneValue scene)
-    /// </summary>
+    {
-    public void GetMinMap( SceneValue scene )
+        if (scene.navLines != null && scene.navLines.Count > 0)
-    {
+            SetRouteValue(scene.navLines);
-        DownloadData data1 = new DownloadData();
+        else
-        string filename = Path.GetFileName(MapPicUrl);
+            Debug.LogError(" 当前场景未设置路径");
-        data1.name = filename;
+
-        data1.type = 1;
+        if (scene.listSpoit != null && scene.listSpoit.Count > 0)
-        data1.downloadPath = MapPicUrl;
+            SetSpoitValue(scene.listSpoit);
-        //data1.updateTime = (int)SceneValue.updateTime;
+        else
-        data1.localSavePath = DownloadManager.Instance.LocaDataPath + "/map/" + filename;
+            Debug.LogError(" 当前场景未创建景点");
-
+
-        if(scene.width>0 &&scene.length>0)
+        if (scene.listPicture != null && scene.listPicture.Count > 0)
-        {
+            SetAnchor(scene.listPicture);
-            //Debug.Log(scene.width + "    " + scene.length);
+        else
-            isStart = true;
+            Debug.LogError(" 当前场景未创建锚点");
-            PointB.position = Vector3.zero;
+        //设置小地图景点
-            PointB.eulerAngles = Vector3.zero;
+      //  m_CalMap.SettingMapPoint(ListCrystals);
-            PointA.position = PointB.position + new Vector3(0, 0, scene.width);
+
-            PointA.eulerAngles = Vector3.zero;
+        UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.download);
-            PointC.position = PointB.position + new Vector3(scene.length, 0, 0);
+        DownloadManager.Instance.UpdataData();
-            PointC.eulerAngles = Vector3.zero;
+    }
-            PointD.position = PointB.position + new Vector3(scene.length, 0, scene.width);
+    /// <summary>
-            PointD.eulerAngles = Vector3.zero;
+    /// 获取小地图
-            m_CalMap.SettingMapPoint(ListCrystals);
+    /// </summary>
-        }
+    public void GetMinMap( SceneValue scene )
-
+    {
-        DownloadManager.Instance.GetMapImage(data1, m_MinMap.Map, (b, tex) =>
+        DownloadData data1 = new DownloadData();
-        {
+        string filename = Path.GetFileName(MapPicUrl);
-            if (b)
+        data1.name = filename;
-            {
+        data1.type = 1;
-                Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
+        data1.downloadPath = MapPicUrl;
-                m_MinMap.Map.sprite = sprite;
+        //data1.updateTime = (int)SceneValue.updateTime;
-                //m_MinMap.Map.SetNativeSize();
+        data1.localSavePath = DownloadManager.Instance.LocaDataPath + "/map/" + filename;
-
+
-                float width = tex.width;
+        if(scene.width>0 &&scene.length>0)
-                float height = tex.height;
+        {
-                if(width>height)
+            //Debug.Log(scene.width + "    " + scene.length);
-                {
+            isStart = true;
-                    width = width / height;
+            PointB.position = Vector3.zero;
-                    height = 1;
+            PointB.eulerAngles = Vector3.zero;
-                }
+            PointA.position = PointB.position + new Vector3(0, 0, scene.width);
-                else
+            PointA.eulerAngles = Vector3.zero;
-                {
+            PointC.position = PointB.position + new Vector3(scene.length, 0, 0);
-                    height = height / width;
+            PointC.eulerAngles = Vector3.zero;
-                    width = 1;
+            PointD.position = PointB.position + new Vector3(scene.length, 0, scene.width);
-                }
+            PointD.eulerAngles = Vector3.zero;
-
+            m_CalMap.SettingMapPoint(ListCrystals);
-                MinMapSize = new Vector2(width * 150, height * 150);
+        }
-                CalMapSize();
+
-                m_MinMap.Map.GetComponent<RectTransform>().sizeDelta = new Vector2( width*150,height*150 );
+        DownloadManager.Instance.GetMapImage(data1, m_MinMap.Map, (b, tex) =>
-
+        {
-                //获取网页端
+            if (b)
-                WebMapSize = new Vector2((float)tex.width, (float)tex.height);
+            {
-                if (SceneValue != null)
+                Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
-                {
+                m_MinMap.Map.sprite = sprite;
-                    StartCreateScene(SceneValue);
+                //m_MinMap.Map.SetNativeSize();
-                }
+
-            }
+                float width = tex.width;
-        });
+                float height = tex.height;
-    }
+                if(width>height)
-
+                {
-
+                    width = width / height;
-    /// <summary>
+                    height = 1;
-    /// 设置景点素材信息
+                }
-    /// </summary>
+                else
-    /// <param name="spoits"></param>
+                {
-    public void SetSpoitValue(List<SpoitValue> spoits)
+                    height = height / width;
-    {
+                    width = 1;
-        SpoitValue spoitValue;
+                }
-        for (int i = 0; i < spoits.Count-1; i++)
+
-        {
+                MinMapSize = new Vector2(width * 150, height * 150);
-            spoitValue = null;
+                CalMapSize();
-            for (int j = 0; j < spoits.Count-1-i; j++)
+                m_MinMap.Map.GetComponent<RectTransform>().sizeDelta = new Vector2( width*150,height*150 );
-            {
+
-                if(spoits[j].id>spoits[j+1].id)
+                //获取网页端
-                {
+                WebMapSize = new Vector2((float)tex.width, (float)tex.height);
-                    spoitValue = spoits[j];
+                if (SceneValue != null)
-                    spoits[j] = spoits[j+1];
+                {
-                    spoits[j+1] = spoitValue;
+                    StartCreateScene(SceneValue);
-                }
+                }
-            }
+            }
-        }
+        });
-
+    }
-        SpoitValues.Clear();
+
-        for (int i = 0; i < spoits.Count; i++)
+
-        {
+    /// <summary>
-            var spoit = spoits[i];
+    /// 设置景点素材信息
-            SpoitValue spoit1 = spoit;
+    /// </summary>
-
+    /// <param name="spoits"></param>
-            CreateCrystalAndTrigger(spoit);
+    public void SetSpoitValue(List<SpoitValue> spoits)
-            CreateMaterial(spoit, out spoit1);
+    {
-            spoits[i] = spoit1;
+        SpoitValue spoitValue;
-        }
+        for (int i = 0; i < spoits.Count-1; i++)
-        for (int i = 0; i < ListColiderBoxs_Mesh.Count; i++)
+        {
-        {
+            spoitValue = null;
-            ListColiderBoxs_Mesh[i].enabled = false;
+            for (int j = 0; j < spoits.Count-1-i; j++)
-        }
+            {
-        SpoitValues.AddRange(spoits);
+                if(spoits[j].id>spoits[j+1].id)
-        SceneValue.listSpoit = SpoitValues;
+                {
-        DataManager.Instance.Spoits = SpoitValues;
+                    spoitValue = spoits[j];
-    }
+                    spoits[j] = spoits[j+1];
-
+                    spoits[j+1] = spoitValue;
-    /// <summary>
+                }
-    /// 创建水晶点和触发器
+            }
-    /// </summary>
+        }
-    private void CreateCrystalAndTrigger(SpoitValue spoit)
+
-    {
+        SpoitValues.Clear();
-        var spoitPos = Vector3.zero;
+        for (int i = 0; i < spoits.Count; i++)
-        if (spoit.SpoitTransform.Count > 0)
+        {
-        {
+            var spoit = spoits[i];
-            //Debug.LogFormat("{0}{1}", spoit.name, "景点存在");
+            SpoitValue spoit1 = spoit;
-            SpoitPos trans = spoit.SpoitTransform[0];
+
-            spoitPos = new Vector3((float)trans.pointRelativeX / WebMapSize.x * MapSize.x, -1f, -(float)trans.pointRelativeY / WebMapSize.y * MapSize.y);
+            CreateCrystalAndTrigger(spoit);
-            //创建水晶点
+            CreateMaterial(spoit, out spoit1);
-            var obj = Instantiate(CrystalItem, CrystalsParent);
+            spoits[i] = spoit1;
-            CommandSystem.Instance.Send(
+        }
-                new InstantiateGOCommand(InstantiateSystem.Instance.BlueObject.SpoitName, obj.gameObject)
+        for (int i = 0; i < ListColiderBoxs_Mesh.Count; i++)
-                );
+        {
-            obj.name = spoit.name;
+            ListColiderBoxs_Mesh[i].enabled = false;
-            obj.transform.localPosition = spoitPos;
+        }
-            ListCrystals.Add(obj.transform);
+        SpoitValues.AddRange(spoits);
-
+        SceneValue.listSpoit = SpoitValues;
-            var spoitobj = CreateSpoit(spoit, spoitPos);
+        DataManager.Instance.Spoits = SpoitValues;
-            ListShowObjs.Add(spoitobj.transform);
+    }
-            ObjectValue spoitvalue = new ObjectValue(spoit.id, -1, spoitobj.name, spoitobj);
+
-            ObjectValues.Add(spoit.id, spoitvalue);
+    /// <summary>
-
+    /// 创建水晶点和触发器
-
+    /// </summary>
-            ////创建触发器
+    private void CreateCrystalAndTrigger(SpoitValue spoit)
-            //if (SpoitsValueDetail.ContainsKey(spoit.id))
+    {
-            //{
+        var spoitPos = Vector3.zero;
-            //    var spoitdetail = SpoitsValueDetail[spoit.id];
+        if (spoit.SpoitTransform.Count > 0)
-            //    var range = spoitdetail.triggerRange;
+        {
-
+            //Debug.LogFormat("{0}{1}", spoit.name, "景点存在");
-            //    if (range.areaRelativeH == 0 && range.areaRelativeW == 0 && range.areaRelativeX == 0 && range.areaRelativeY == 0)
+            SpoitPos trans = spoit.SpoitTransform[0];
-            //    {
+            spoitPos = new Vector3((float)trans.pointRelativeX / WebMapSize.x * MapSize.x, -1f, -(float)trans.pointRelativeY / WebMapSize.y * MapSize.y);
-
+            //创建水晶点
-            //    }
+            var obj = Instantiate(CrystalItem, CrystalsParent);
-            //    else
+            CommandSystem.Instance.Send(
-            //    {
+                new InstantiateGOCommand(InstantiateSystem.Instance.BlueObject.SpoitName, obj.gameObject)
-            //        trans = range;
+                );
-            //    }
+            obj.name = spoit.name;
-            //}
+            obj.transform.localPosition = spoitPos;
-
+            ListCrystals.Add(obj.transform);
-            //var tiggerpos = new Vector3((float)trans.areaRelativeX / WebMapSize.x * MapSize.x, -0.5f, -(float)trans.areaRelativeY / WebMapSize.y * MapSize.y);
+
-            var tiggerpos = new Vector3((float)(trans.areaRelativeX + trans.areaRelativeW / 2) / WebMapSize.x * MapSize.x, -0.5f, -(float)(trans.areaRelativeY + trans.areaRelativeH / 2) / WebMapSize.y * MapSize.y);
+            var spoitobj = CreateSpoit(spoit, spoitPos);
-            var tiggerRange = new Vector3((float)trans.areaRelativeW / WebMapSize.x * MapSize.x, 0.1f, (float)trans.areaRelativeH / WebMapSize.y * MapSize.y);
+            ListShowObjs.Add(spoitobj.transform);
-            var triggerobj = Instantiate(ColliderItem, CollidersParent);
+            ObjectValue spoitvalue = new ObjectValue(spoit.id, -1, spoitobj.name, spoitobj);
-            triggerobj.name = spoit.name;
+            ObjectValues.Add(spoit.id, spoitvalue);
-            triggerobj.transform.localPosition = tiggerpos;
+
-            triggerobj.transform.localScale = tiggerRange;
+
-            //triggerobj.AddComponent<EditorEventHandler>().IsClickEditor = true;
+            ////创建触发器
-
+            //if (SpoitsValueDetail.ContainsKey(spoit.id))
-            ObjectValue boxvalue = new ObjectValue(spoit.id, -1, triggerobj.name, triggerobj);
+            //{
-            ColliderObjectValues.Add(boxvalue);
+            //    var spoitdetail = SpoitsValueDetail[spoit.id];
-            ListColliderBoxs.Add(triggerobj.transform);
+            //    var range = spoitdetail.triggerRange;
-            ListColiderBoxs_Mesh.Add(triggerobj.GetComponent<MeshRenderer>());
+
-        }
+            //    if (range.areaRelativeH == 0 && range.areaRelativeW == 0 && range.areaRelativeX == 0 && range.areaRelativeY == 0)
-        else
+            //    {
-        {
+
-            Debug.LogFormat("{0}{1}", spoit.name, "景点不存在");
+            //    }
-        }
+            //    else
-    }
+            //    {
-
+            //        trans = range;
-    private GameObject CreateSpoit(SpoitValue spoit, Vector3 spoitPos)
+            //    }
-    {
+            //}
-        //生成景点父物体
+
-        GameObject spoitObj = new GameObject(spoit.name);
+            //var tiggerpos = new Vector3((float)trans.areaRelativeX / WebMapSize.x * MapSize.x, -0.5f, -(float)trans.areaRelativeY / WebMapSize.y * MapSize.y);
-        spoitObj.transform.SetParent(ObjsParent.transform);
+            var tiggerpos = new Vector3((float)(trans.areaRelativeX + trans.areaRelativeW / 2) / WebMapSize.x * MapSize.x, -0.5f, -(float)(trans.areaRelativeY + trans.areaRelativeH / 2) / WebMapSize.y * MapSize.y);
-        spoitObj.AddComponent<EditorEventHandler>().IsClickEditor = false;
+            var tiggerRange = new Vector3((float)trans.areaRelativeW / WebMapSize.x * MapSize.x, 0.1f, (float)trans.areaRelativeH / WebMapSize.y * MapSize.y);
-
+            var triggerobj = Instantiate(ColliderItem, CollidersParent);
-
+            triggerobj.name = spoit.name;
-        //为景点位置信息赋值
+            triggerobj.transform.localPosition = tiggerpos;
-        if (spoit.spoitTf.startPos == Vector3.zero && spoit.spoitTf.nowPos == Vector3.zero)
+            triggerobj.transform.localScale = tiggerRange;
-        {
+            //triggerobj.AddComponent<EditorEventHandler>().IsClickEditor = true;
-            spoitObj.transform.localPosition = new Vector3(spoitPos.x, 0.5f, spoitPos.z);
+
-            spoitObj.transform.localRotation = Quaternion.identity;
+            ObjectValue boxvalue = new ObjectValue(spoit.id, -1, triggerobj.name, triggerobj);
-            spoitObj.transform.localScale = new Vector3(1, 1, 1);
+            ColliderObjectValues.Add(boxvalue);
-            spoit.spoitTf.SetStartValue(spoitObj.transform.localPosition, spoitObj.transform.localEulerAngles, spoitObj.transform.localScale);
+            ListColliderBoxs.Add(triggerobj.transform);
-        }
+            ListColiderBoxs_Mesh.Add(triggerobj.GetComponent<MeshRenderer>());
-        else
+        }
-        {
+        else
-            spoitObj.transform.localPosition = spoit.spoitTf.nowPos;
+        {
-            spoitObj.transform.localEulerAngles = spoit.spoitTf.nowRot;
+            Debug.LogFormat("{0}{1}", spoit.name, "景点不存在");
-            spoitObj.transform.localScale = spoit.spoitTf.nowScale;
+        }
-        }
+    }
-
+
-        return spoitObj;
+    private GameObject CreateSpoit(SpoitValue spoit, Vector3 spoitPos)
-    }
+    {
-
+        //生成景点父物体
-    /// <summary>
+        GameObject spoitObj = new GameObject(spoit.name);
-    /// 创建整体素材
+        spoitObj.transform.SetParent(ObjsParent.transform);
-    /// 一个景点下应只有一个父物体,其他素材都在父物体下
+        spoitObj.AddComponent<EditorEventHandler>().IsClickEditor = false;
-    /// </summary>
+
-    private void CreateMaterial(SpoitValue spoit, out SpoitValue newspoit)
+
-    {
+        //为景点位置信息赋值
-        var spoitValues = ObjectValues[spoit.id];
+        if (spoit.spoitTf.startPos == Vector3.zero && spoit.spoitTf.nowPos == Vector3.zero)
-        var spoitObj = spoitValues.Object;
+        {
-
+            spoitObj.transform.localPosition = new Vector3(spoitPos.x, 0.5f, spoitPos.z);
-        //生成素材组合
+            spoitObj.transform.localRotation = Quaternion.identity;
-        for (int i = 0; i < spoit.material.Count; i++)
+            spoitObj.transform.localScale = new Vector3(1, 1, 1);
-        {
+            spoit.spoitTf.SetStartValue(spoitObj.transform.localPosition, spoitObj.transform.localEulerAngles, spoitObj.transform.localScale);
-            //素材整体
+        }
-            MaterialObl material = spoit.material[i];
+        else
-            //Debug.Log(spoit.material[i].name);
+        {
-            //素材组物体
+            spoitObj.transform.localPosition = spoit.spoitTf.nowPos;
-            GameObject matObj = new GameObject(material.name);
+            spoitObj.transform.localEulerAngles = spoit.spoitTf.nowRot;
-            matObj.transform.SetParent(spoitValues.Object.transform);
+            spoitObj.transform.localScale = spoit.spoitTf.nowScale;
-            if (!material.select)
+        }
-            {
+
-                matObj.transform.localPosition = Vector3.zero;
+        return spoitObj;
-                matObj.transform.localEulerAngles = Vector3.zero;
+    }
-                matObj.transform.localScale = new Vector3(1, 1, 1);
+
-                material.objectTransform.SetStartValue(matObj.transform.localPosition, matObj.transform.localEulerAngles, matObj.transform.localScale);
+    /// <summary>
-            }
+    /// 创建整体素材
-            else
+    /// 一个景点下应只有一个父物体,其他素材都在父物体下
-            {
+    /// </summary>
-                matObj.transform.localPosition = material.objectTransform.nowPos;
+    private void CreateMaterial(SpoitValue spoit, out SpoitValue newspoit)
-                matObj.transform.localEulerAngles = material.objectTransform.nowRot;
+    {
-                matObj.transform.localScale = material.objectTransform.nowScale;
+        var spoitValues = ObjectValues[spoit.id];
-            }
+        var spoitObj = spoitValues.Object;
-            //素材组合对应ObjectValue的
+
-            ObjectValue spoitValue = new ObjectValue(i, spoit.id, material.name, matObj);
+        //生成素材组合
-            //素材组合下的单个素材ObjectValue
+        for (int i = 0; i < spoit.material.Count; i++)
-            List<ObjectValue> objsvalue = null;
+        {
-            MaterialObl newmaterial = material;
+            //素材整体
-            //生成素材组合的ObjectValue,是对应景点的
+            MaterialObl material = spoit.material[i];
-            switch (material.type)
+            //Debug.Log(spoit.material[i].name);
-            {
+            //素材组物体
-                case (int)MaterialType.None:
+            GameObject matObj = new GameObject(material.name);
-                    break;
+            matObj.transform.SetParent(spoitValues.Object.transform);
-                case (int)MaterialType.Image:
+            if (!material.select)
-                case (int)MaterialType.Video:
+            {
-                case (int)MaterialType.Model:
+                matObj.transform.localPosition = Vector3.zero;
-                case (int)MaterialType.Text:
+                matObj.transform.localEulerAngles = Vector3.zero;
-                case (int)MaterialType.LocaImage:
+                matObj.transform.localScale = new Vector3(1, 1, 1);
-                    objsvalue = CreateSuCaiObj(material, matObj, out newmaterial);
+                material.objectTransform.SetStartValue(matObj.transform.localPosition, matObj.transform.localEulerAngles, matObj.transform.localScale);
-                    break;
+            }
-                case (int)MaterialType.Image_Video_Text:
+            else
-                    objsvalue = CreateImage_Video_Text(material, matObj, out newmaterial);
+            {
-                    break;
+                matObj.transform.localPosition = material.objectTransform.nowPos;
-                case (int)MaterialType.Model_Text:
+                matObj.transform.localEulerAngles = material.objectTransform.nowRot;
-                    objsvalue = CreateModel_Text(material, matObj, out newmaterial);
+                matObj.transform.localScale = material.objectTransform.nowScale;
-                    break;
+            }
-                default:
+            //素材组合对应ObjectValue的
-                    break;
+            ObjectValue spoitValue = new ObjectValue(i, spoit.id, material.name, matObj);
-            }
+            //素材组合下的单个素材ObjectValue
-            spoit.material[i] = newmaterial;
+            List<ObjectValue> objsvalue = null;
-            spoitValue.ChildrenObj.AddRange(objsvalue);
+            MaterialObl newmaterial = material;
-            spoitValues.ChildrenObj.Add(spoitValue);
+            //生成素材组合的ObjectValue,是对应景点的
-        }
+            switch (material.type)
-
+            {
-
+                case (int)MaterialType.None:
-        newspoit = spoit;
+                    break;
-
+                case (int)MaterialType.Image:
-        if (ObjectValues.ContainsKey(spoit.id))
+                case (int)MaterialType.Video:
-        {
+                case (int)MaterialType.Model:
-            ObjectValues[spoit.id] = spoitValues;
+                case (int)MaterialType.Text:
-        }
+                case (int)MaterialType.LocaImage:
-        else
+                    objsvalue = CreateSuCaiObj(material, matObj, out newmaterial);
-        {
+                    break;
-            ObjectValues.Add(spoit.id, spoitValues);
+                case (int)MaterialType.Image_Video_Text:
-        }
+                    objsvalue = CreateImage_Video_Text(material, matObj, out newmaterial);
-        spoitObj.gameObject.SetActive(false);
+                    break;
-    }
+                case (int)MaterialType.Model_Text:
-
+                    objsvalue = CreateModel_Text(material, matObj, out newmaterial);
-    /// <summary>
+                    break;
-    /// 编辑面板添加素材
+                default:
-    /// </summary>
+                    break;
-    /// <param name="material"></param>
+            }
-    public void AddMaterial(MaterialObl material)
+            spoit.material[i] = newmaterial;
-    {
+            spoitValue.ChildrenObj.AddRange(objsvalue);
-        if (SpoitIndex < 0)
+            spoitValues.ChildrenObj.Add(spoitValue);
-        {
+        }
-            return;
+
-        }
+
-
+        newspoit = spoit;
-        MaterialObl newmaterial = new MaterialObl();
+
-        newmaterial = material;
+        if (ObjectValues.ContainsKey(spoit.id))
-        var spoit = SpoitValues[SpoitIndex];
+        {
-        var spoitValues = ObjectValues[spoit.id];
+            ObjectValues[spoit.id] = spoitValues;
-        var spoitObj = spoitValues.Object;
+        }
-
+        else
-        //素材组物体
+        {
-        GameObject matObj = new GameObject(newmaterial.name + "-" + spoit.material.Count.ToString());
+            ObjectValues.Add(spoit.id, spoitValues);
-        newmaterial.name = matObj.name;
+        }
-        matObj.transform.SetParent(spoitValues.Object.transform);
+        spoitObj.gameObject.SetActive(false);
-        if (!material.select)
+    }
-        {
+
-            matObj.transform.localPosition = Vector3.zero;
+    /// <summary>
-            matObj.transform.localEulerAngles = Vector3.zero;
+    /// 编辑面板添加素材
-            matObj.transform.localScale = new Vector3(1, 1, 1);
+    /// </summary>
-            newmaterial.objectTransform.SetStartValue(matObj.transform.localPosition, matObj.transform.localEulerAngles, matObj.transform.localScale);
+    /// <param name="material"></param>
-        }
+    public void AddMaterial(MaterialObl material)
-        else
+    {
-        {
+        if (SpoitIndex < 0)
-            matObj.transform.localPosition = newmaterial.objectTransform.nowPos;
+        {
-            matObj.transform.localEulerAngles = newmaterial.objectTransform.nowRot;
+            return;
-            matObj.transform.localScale = newmaterial.objectTransform.nowScale;
+        }
-        }
+
-        //素材组合对应ObjectValue的
+        MaterialObl newmaterial = new MaterialObl();
-        ObjectValue spoitValue = new ObjectValue(spoit.material.Count, spoit.id, newmaterial.name, matObj);
+        newmaterial = material;
-
+        var spoit = SpoitValues[SpoitIndex];
-        //素材组合下的单个素材ObjectValue
+        var spoitValues = ObjectValues[spoit.id];
-        List<ObjectValue> objsvalue = null;
+        var spoitObj = spoitValues.Object;
-        //生成素材组合的ObjectValue,是对应景点的
+
-        switch (material.type)
+        //素材组物体
-        {
+        GameObject matObj = new GameObject(newmaterial.name + "-" + spoit.material.Count.ToString());
-            case (int)MaterialType.None:
+        newmaterial.name = matObj.name;
-                break;
+        matObj.transform.SetParent(spoitValues.Object.transform);
-            case (int)MaterialType.Image:
+        if (!material.select)
-            case (int)MaterialType.Video:
+        {
-            case (int)MaterialType.Model:
+            matObj.transform.localPosition = Vector3.zero;
-            case (int)MaterialType.Text:
+            matObj.transform.localEulerAngles = Vector3.zero;
-            case (int)MaterialType.LocaImage:
+            matObj.transform.localScale = new Vector3(1, 1, 1);
-                objsvalue = CreateSuCaiObj(newmaterial, matObj, out newmaterial);
+            newmaterial.objectTransform.SetStartValue(matObj.transform.localPosition, matObj.transform.localEulerAngles, matObj.transform.localScale);
-                break;
+        }
-            case (int)MaterialType.Image_Video_Text:
+        else
-                objsvalue = CreateImage_Video_Text(newmaterial, matObj, out newmaterial);
+        {
-                break;
+            matObj.transform.localPosition = newmaterial.objectTransform.nowPos;
-            case (int)MaterialType.Model_Text:
+            matObj.transform.localEulerAngles = newmaterial.objectTransform.nowRot;
-                objsvalue = CreateModel_Text(newmaterial, matObj, out newmaterial);
+            matObj.transform.localScale = newmaterial.objectTransform.nowScale;
-                break;
+        }
-            default:
+        //素材组合对应ObjectValue的
-                break;
+        ObjectValue spoitValue = new ObjectValue(spoit.material.Count, spoit.id, newmaterial.name, matObj);
-        }
+
-        newmaterial.select = true;
+        //素材组合下的单个素材ObjectValue
-        spoit.material.Add(newmaterial);
+        List<ObjectValue> objsvalue = null;
-        spoitValue.ChildrenObj.AddRange(objsvalue);
+        //生成素材组合的ObjectValue,是对应景点的
-        spoitValues.ChildrenObj.Add(spoitValue);
+        switch (material.type)
-
+        {
-        if (ObjectValues.ContainsKey(spoit.id))
+            case (int)MaterialType.None:
-        {
+                break;
-            ObjectValues[spoit.id] = spoitValues;
+            case (int)MaterialType.Image:
-        }
+            case (int)MaterialType.Video:
-        else
+            case (int)MaterialType.Model:
-        {
+            case (int)MaterialType.Text:
-            ObjectValues.Add(spoit.id, spoitValues);
+            case (int)MaterialType.LocaImage:
-        }
+                objsvalue = CreateSuCaiObj(newmaterial, matObj, out newmaterial);
-
+                break;
-        SpoitValues[SpoitIndex] = spoit;
+            case (int)MaterialType.Image_Video_Text:
-        //更新编辑面板Ui
+                objsvalue = CreateImage_Video_Text(newmaterial, matObj, out newmaterial);
-        UpdateEditorUI();
+                break;
-    }
+            case (int)MaterialType.Model_Text:
-    /// <summary>
+                objsvalue = CreateModel_Text(newmaterial, matObj, out newmaterial);
-    /// 创建  1图片 2视频 3模型 4文字
+                break;
-    /// </summary>
+            default:
-    /// <param name="type">素材类型</param>
+                break;
-    /// <param name="material">素材数据</param>
+        }
-    /// <param name="spoit">景点</param>
+        newmaterial.select = true;
-    /// <returns></returns>
+        spoit.material.Add(newmaterial);
-    private List<ObjectValue> CreateSuCaiObj(MaterialObl material, GameObject spoit, out MaterialObl newmaterial)
+        spoitValue.ChildrenObj.AddRange(objsvalue);
-    {
+        spoitValues.ChildrenObj.Add(spoitValue);
-        List<ObjectValue> objects = new List<ObjectValue>();
+
-        List<MaterialObjValue> objs = material.materialList;
+        if (ObjectValues.ContainsKey(spoit.id))
-        newmaterial = material;
+        {
-
+            ObjectValues[spoit.id] = spoitValues;
-        //for (int i = 0; i < objs.Count; i++)
+        }
-        //{
+        else
-        //    Debug.Log(objs[i].localSavePath);
+        {
-        //}
+            ObjectValues.Add(spoit.id, spoitValues);
-
+        }
-        for (int i = 0; i < objs.Count; i++)
+
-        {
+        SpoitValues[SpoitIndex] = spoit;
-            var mat = objs[i];
+        //更新编辑面板Ui
-            GameObject go = null;
+        UpdateEditorUI();
-            switch (int.Parse(mat.type))
+    }
-            {
+    /// <summary>
-                case (int)MaterialType.None:
+    /// 创建  1图片 2视频 3模型 4文字
-                    break;
+    /// </summary>
-                case (int)MaterialType.Image:
+    /// <param name="type">素材类型</param>
-                    var pImage = ResMgr.Instance.Load<GameObject>("Template/Prefab/Image");
+    /// <param name="material">素材数据</param>
-                    go = Instantiate(pImage, spoit.transform);
+    /// <param name="spoit">景点</param>
-                    var imageitem = go.AddComponent<TemplateImage>();
+    /// <returns></returns>
-                    go.SetActive(true);
+    private List<ObjectValue> CreateSuCaiObj(MaterialObl material, GameObject spoit, out MaterialObl newmaterial)
-                    imageitem.SetData(mat, material.updateTime);
+    {
-                    break;
+        List<ObjectValue> objects = new List<ObjectValue>();
-                case (int)MaterialType.Video:
+        List<MaterialObjValue> objs = material.materialList;
-                    var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
+        newmaterial = material;
-                    go = Instantiate(pVideo, spoit.transform);
+
-                    var videoitem = go.AddComponent<TemplateVideo>();
+        //for (int i = 0; i < objs.Count; i++)
-                    go.SetActive(true);
+        //{
-                    videoitem.SetData(mat, material.updateTime);
+        //    Debug.Log(objs[i].localSavePath);
-                    break;
+        //}
-                case (int)MaterialType.Model:
+
-                    var pModel = ResMgr.Instance.Load<GameObject>("Template/Prefab/Model");
+        for (int i = 0; i < objs.Count; i++)
-                    go = Instantiate(pModel, spoit.transform);
+        {
-                    var modelitem = go.AddComponent<TemplateModel>();
+            var mat = objs[i];
-                    go.SetActive(true);
+            GameObject go = null;
-                    modelitem.SetData(mat, material.updateTime);
+            switch (int.Parse(mat.type))
-                    Debug.Log(modelitem.Data.localSavePath);
+            {
-                    break;
+                case (int)MaterialType.None:
-                case (int)MaterialType.Text:
+                    break;
-                    var pText = ResMgr.Instance.Load<GameObject>("Template/Prefab/Text");
+                case (int)MaterialType.Image:
-                    go = Instantiate(pText, spoit.transform);
+                    var pImage = ResMgr.Instance.Load<GameObject>("Template/Prefab/Image");
-                    var textitem = go.AddComponent<TemplateText>();
+                    go = Instantiate(pImage, spoit.transform);
-                    go.SetActive(true);
+                    var imageitem = go.AddComponent<TemplateImage>();
-                    textitem.SetData(mat, material.updateTime);
+                    go.SetActive(true);
-                    break;
+                    imageitem.SetData(mat, material.updateTime);
-                case (int)MaterialType.LocaImage:
+                    break;
-                    var pLocaImage = ResMgr.Instance.Load<GameObject>("Template/Prefab/Image");
+                case (int)MaterialType.Video:
-                    go = Instantiate(pLocaImage, spoit.transform);
+                    var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
-                    var locaImageitem = go.AddComponent<TemplateImage>();
+                    go = Instantiate(pVideo, spoit.transform);
-                    go.SetActive(true);
+                    var videoitem = go.AddComponent<TemplateVideo>();
-                    locaImageitem.SetLocaImageData(mat);
+                    go.SetActive(true);
-                    break;
+                    videoitem.SetData(mat, material.updateTime);
-                default:
+                    break;
-                    break;
+                case (int)MaterialType.Model:
-            }
+                    var pModel = ResMgr.Instance.Load<GameObject>("Template/Prefab/Model");
-
+                    go = Instantiate(pModel, spoit.transform);
-            if (go != null)
+                    var modelitem = go.AddComponent<TemplateModel>();
-            {
+                    go.SetActive(true);
-                go.name = string.IsNullOrWhiteSpace(mat.name) ? spoit.name + "-" + i.ToString() : mat.name;
+                    modelitem.SetData(mat, material.updateTime);
-                mat.name = go.name;
+                    Debug.Log(modelitem.Data.localSavePath);
-                go.AddComponent<EditorEventHandler>().Type = (MaterialType)(int.Parse(mat.type));
+                    break;
-
+                case (int)MaterialType.Text:
-                if (material.select)
+                    var pText = ResMgr.Instance.Load<GameObject>("Template/Prefab/Text");
-                {
+                    go = Instantiate(pText, spoit.transform);
-                    go.transform.localPosition = mat.ObjectTransform.nowPos;
+                    var textitem = go.AddComponent<TemplateText>();
-                    go.transform.localEulerAngles = mat.ObjectTransform.nowRot;
+                    go.SetActive(true);
-                    go.transform.localScale = mat.ObjectTransform.nowScale;
+                    textitem.SetData(mat, material.updateTime);
-
+                    break;
-                }
+                case (int)MaterialType.LocaImage:
-                else
+                    var pLocaImage = ResMgr.Instance.Load<GameObject>("Template/Prefab/Image");
-                {
+                    go = Instantiate(pLocaImage, spoit.transform);
-                    go.transform.localEulerAngles = Vector3.zero;
+                    var locaImageitem = go.AddComponent<TemplateImage>();
-                    go.transform.localScale = new Vector3(1, 1, 1);
+                    go.SetActive(true);
-                    if (int.Parse(mat.type) != (int)MaterialType.Text)
+                    locaImageitem.SetLocaImageData(mat);
-                    {
+                    break;
-                        go.transform.localPosition = Vector3.zero;
+                default:
-                    }
+                    break;
-                    else
+            }
-                    {
+
-                        //Set text position
+            if (go != null)
-                        if (mat.textPosition == "top")
+            {
-                        {
+                go.name = string.IsNullOrWhiteSpace(mat.name) ? spoit.name + "-" + i.ToString() : mat.name;
-                            go.transform.localPosition = new Vector3(0, 0.3f, 0);
+                mat.name = go.name;
-                        }
+                go.AddComponent<EditorEventHandler>().Type = (MaterialType)(int.Parse(mat.type));
-                        else if (mat.textPosition == "bottom")
+
-                        {
+                if (material.select)
-                            go.transform.localPosition = new Vector3(0, -0.3f, 0);
+                {
-                        }
+                    go.transform.localPosition = mat.ObjectTransform.nowPos;
-                    }
+                    go.transform.localEulerAngles = mat.ObjectTransform.nowRot;
-                    mat.ObjectTransform.SetStartValue(go.transform.localPosition, go.transform.localEulerAngles, go.transform.localScale);
+                    go.transform.localScale = mat.ObjectTransform.nowScale;
-                }
+
-
+                }
-                ObjectValue objectValue = new ObjectValue(i, material.id, mat.name, go);
+                else
-                objects.Add(objectValue);
+                {
-            }
+                    go.transform.localEulerAngles = Vector3.zero;
-            newmaterial.materialList[i] = mat;
+                    go.transform.localScale = new Vector3(1, 1, 1);
-        }
+                    if (int.Parse(mat.type) != (int)MaterialType.Text)
-        return objects;
+                    {
-    }
+                        go.transform.localPosition = Vector3.zero;
-
+                    }
-    /// <summary>
+                    else
-    /// 创建 6模型+文字
+                    {
-    /// </summary>
+                        //Set text position
-    /// <param name="material"></param>
+                        if (mat.textPosition == "top")
-    /// <param name="spoit"></param>
+                        {
-    /// <returns></returns>
+                            go.transform.localPosition = new Vector3(0, 0.3f, 0);
-    private List<ObjectValue> CreateModel_Text(MaterialObl material, GameObject spoit, out MaterialObl newmaterial)
+                        }
-    {
+                        else if (mat.textPosition == "bottom")
-        List<ObjectValue> objects = new List<ObjectValue>();
+                        {
-        List<MaterialObjValue> objs = material.materialList;
+                            go.transform.localPosition = new Vector3(0, -0.3f, 0);
-        newmaterial = material;
+                        }
-        for (int i = 0; i < objs.Count; i++)
+                    }
-        {
+                    mat.ObjectTransform.SetStartValue(go.transform.localPosition, go.transform.localEulerAngles, go.transform.localScale);
-            var mat = objs[i];
+                }
-            GameObject go = null;
+
-            switch (int.Parse(mat.type))
+                ObjectValue objectValue = new ObjectValue(i, material.id, mat.name, go);
-            {
+                objects.Add(objectValue);
-                case (int)MaterialType.None:
+            }
-                    break;
+            newmaterial.materialList[i] = mat;
-                case (int)MaterialType.Model:
+        }
-                    var pModel = ResMgr.Instance.Load<GameObject>("Template/Prefab/Model");
+        return objects;
-                    go = Instantiate(pModel, spoit.transform);
+    }
-                    var modelitem = go.AddComponent<TemplateModel>();
+
-                    go.SetActive(true);
+    /// <summary>
-                    modelitem.SetData(mat, material.updateTime);
+    /// 创建 6模型+文字
-                    break;
+    /// </summary>
-                case (int)MaterialType.Text:
+    /// <param name="material"></param>
-                    var pText = ResMgr.Instance.Load<GameObject>("Template/Prefab/Text");
+    /// <param name="spoit"></param>
-                    go = Instantiate(pText, spoit.transform);
+    /// <returns></returns>
-                    var textitem = go.AddComponent<TemplateText>();
+    private List<ObjectValue> CreateModel_Text(MaterialObl material, GameObject spoit, out MaterialObl newmaterial)
-                    go.SetActive(true);
+    {
-                    textitem.SetData(mat, material.updateTime);
+        List<ObjectValue> objects = new List<ObjectValue>();
-                    break;
+        List<MaterialObjValue> objs = material.materialList;
-                default:
+        newmaterial = material;
-                    break;
+        for (int i = 0; i < objs.Count; i++)
-            }
+        {
-
+            var mat = objs[i];
-            if (go != null)
+            GameObject go = null;
-            {
+            switch (int.Parse(mat.type))
-                go.name = string.IsNullOrWhiteSpace(mat.name) ? spoit.name + "-" + i.ToString() : mat.name;
+            {
-                go.AddComponent<EditorEventHandler>().Type = (MaterialType)(int.Parse(mat.type));
+                case (int)MaterialType.None:
-
+                    break;
-                if (material.select)
+                case (int)MaterialType.Model:
-                {
+                    var pModel = ResMgr.Instance.Load<GameObject>("Template/Prefab/Model");
-                    go.transform.localPosition = mat.ObjectTransform.nowPos;
+                    go = Instantiate(pModel, spoit.transform);
-                    go.transform.localEulerAngles = mat.ObjectTransform.nowRot;
+                    var modelitem = go.AddComponent<TemplateModel>();
-                    go.transform.localScale = mat.ObjectTransform.nowScale;
+                    go.SetActive(true);
-                }
+                    modelitem.SetData(mat, material.updateTime);
-                else
+                    break;
-                {
+                case (int)MaterialType.Text:
-                    go.transform.localEulerAngles = Vector3.zero;
+                    var pText = ResMgr.Instance.Load<GameObject>("Template/Prefab/Text");
-                    go.transform.localScale = new Vector3(1, 1, 1);
+                    go = Instantiate(pText, spoit.transform);
-                    if (int.Parse(mat.type) != (int)MaterialType.Text)
+                    var textitem = go.AddComponent<TemplateText>();
-                    {
+                    go.SetActive(true);
-                        go.transform.localPosition = Vector3.zero;
+                    textitem.SetData(mat, material.updateTime);
-                    }
+                    break;
-                    else
+                default:
-                    {
+                    break;
-                        //Set text position
+            }
-                        if (mat.textPosition == "top")
+
-                        {
+            if (go != null)
-                            go.transform.localPosition = new Vector3(0, 0.3f, 0);
+            {
-                        }
+                go.name = string.IsNullOrWhiteSpace(mat.name) ? spoit.name + "-" + i.ToString() : mat.name;
-                        else if (mat.textPosition == "bottom")
+                go.AddComponent<EditorEventHandler>().Type = (MaterialType)(int.Parse(mat.type));
-                        {
+
-                            go.transform.localPosition = new Vector3(0, -0.3f, 0);
+                if (material.select)
-                        }
+                {
-                        else if (mat.textPosition == "left")
+                    go.transform.localPosition = mat.ObjectTransform.nowPos;
-                        {
+                    go.transform.localEulerAngles = mat.ObjectTransform.nowRot;
-                            go.transform.localPosition = new Vector3(-0.3f, 0, 0);
+                    go.transform.localScale = mat.ObjectTransform.nowScale;
-                        }
+                }
-                        else if (mat.textPosition == "right")
+                else
-                        {
+                {
-                            go.transform.localPosition = new Vector3(0.3f, 0f, 0);
+                    go.transform.localEulerAngles = Vector3.zero;
-                        }
+                    go.transform.localScale = new Vector3(1, 1, 1);
-                    }
+                    if (int.Parse(mat.type) != (int)MaterialType.Text)
-                    mat.ObjectTransform.SetStartValue(go.transform.localPosition, go.transform.localEulerAngles, go.transform.localScale);
+                    {
-                }
+                        go.transform.localPosition = Vector3.zero;
-                ObjectValue objectValue = CreateMatObjectValue(i, material.id, go, mat);
+                    }
-                objects.Add(objectValue);
+                    else
-            }
+                    {
-
+                        //Set text position
-            newmaterial.materialList[i] = mat;
+                        if (mat.textPosition == "top")
-        }
+                        {
-        return objects;
+                            go.transform.localPosition = new Vector3(0, 0.3f, 0);
-    }
+                        }
-
+                        else if (mat.textPosition == "bottom")
-
+                        {
-    /// <summary>
+                            go.transform.localPosition = new Vector3(0, -0.3f, 0);
-    /// 创建 5图片+文字/视频+文字
+                        }
-    /// </summary>
+                        else if (mat.textPosition == "left")
-    private List<ObjectValue> CreateImage_Video_Text(MaterialObl material, GameObject spoit, out MaterialObl newmaterial)
+                        {
-    {
+                            go.transform.localPosition = new Vector3(-0.3f, 0, 0);
-        newmaterial = material;
+                        }
-        List<ObjectValue> objects = new List<ObjectValue>();
+                        else if (mat.textPosition == "right")
-        switch (material.typesetting)
+                        {
-        {
+                            go.transform.localPosition = new Vector3(0.3f, 0f, 0);
-            case "1":
+                        }
-                objects = SRTitleLayout.CalLayout(material, spoit, out newmaterial);
+                    }
-                break;
+                    mat.ObjectTransform.SetStartValue(go.transform.localPosition, go.transform.localEulerAngles, go.transform.localScale);
-            case "2":
+                }
-                objects = SRSectorLayout.CalLayout(material, spoit, out newmaterial);
+                ObjectValue objectValue = CreateMatObjectValue(i, material.id, go, mat);
-                break;
+                objects.Add(objectValue);
-            case "3":
+            }
-                objects = DRTitleLayout.CalLayout(material, spoit, out newmaterial);
+
-                break;
+            newmaterial.materialList[i] = mat;
-            case "4":
+        }
-                objects = DRFanLayout.CalLayout(material, spoit, out newmaterial);
+        return objects;
-                break;
+    }
-            case "5":
+
-                objects = SRTitleLayout.CalLayout(material, spoit, out newmaterial,"5");
+
-                break;
+    /// <summary>
-            case "自定义":
+    /// 创建 5图片+文字/视频+文字
-                break;
+    /// </summary>
-            default:
+    private List<ObjectValue> CreateImage_Video_Text(MaterialObl material, GameObject spoit, out MaterialObl newmaterial)
-                break;
+    {
-        }
+        newmaterial = material;
-        return objects;
+        List<ObjectValue> objects = new List<ObjectValue>();
-    }
+        switch (material.typesetting)
-
+        {
-    /// <summary>
+            case "1":
-    /// 创建物体ObjectValue,并赋值位置信息
+                objects = SRTitleLayout.CalLayout(material, spoit, out newmaterial);
-    /// </summary>
+                break;
-    /// <param name="id"></param>
+            case "2":
-    /// <param name="parentid"></param>
+                objects = SRSectorLayout.CalLayout(material, spoit, out newmaterial);
-    /// <param name="go"></param>
+                break;
-    /// <param name="mat"></param>
+            case "3":
-    /// <returns></returns>
+                objects = DRTitleLayout.CalLayout(material, spoit, out newmaterial);
-    private ObjectValue CreateMatObjectValue(int id, int parentid, GameObject go, MaterialObjValue mat)
+                break;
-    {
+            case "4":
-        go.name = string.IsNullOrWhiteSpace(mat.name) ? go.name : mat.name;
+                objects = DRFanLayout.CalLayout(material, spoit, out newmaterial);
-        go.AddComponent<EditorEventHandler>().Type = (MaterialType)(int.Parse(mat.type));
+                break;
-        //为物体位置信息赋值
+            case "5":
-        if (mat.ObjectTransform != null)
+                objects = SRTitleLayout.CalLayout(material, spoit, out newmaterial,"5");
-        {
+                break;
-            go.transform.localPosition = mat.ObjectTransform.nowPos;
+            case "自定义":
-            go.transform.localEulerAngles = mat.ObjectTransform.nowRot;
+                break;
-            go.transform.localScale = mat.ObjectTransform.nowScale;
+            default:
-        }
+                break;
-        else
+        }
-        {
+        return objects;
-            go.transform.localPosition = Vector3.zero;
+    }
-            go.transform.localEulerAngles = Vector3.zero;
+
-            go.transform.localScale = new Vector3(1, 1, 1);
+    /// <summary>
-        }
+    /// 创建物体ObjectValue,并赋值位置信息
-
+    /// </summary>
-        ObjectValue objectValue = new ObjectValue(id, parentid, mat.name, go, go.transform.localPosition, go.transform.localEulerAngles, go.transform.localScale);
+    /// <param name="id"></param>
-        return objectValue;
+    /// <param name="parentid"></param>
-    }
+    /// <param name="go"></param>
-
+    /// <param name="mat"></param>
-    #endregion
+    /// <returns></returns>
-
+    private ObjectValue CreateMatObjectValue(int id, int parentid, GameObject go, MaterialObjValue mat)
-    #region 路径
+    {
-
+        go.name = string.IsNullOrWhiteSpace(mat.name) ? go.name : mat.name;
-    /// <summary>
+        go.AddComponent<EditorEventHandler>().Type = (MaterialType)(int.Parse(mat.type));
-    /// 设置路线数据
+        //为物体位置信息赋值
-    /// </summary>
+        if (mat.ObjectTransform != null)
-    /// <param name="navLines"></param>
+        {
-    public void SetRouteValue(List<NavLinesItem> navLines)
+            go.transform.localPosition = mat.ObjectTransform.nowPos;
-    {
+            go.transform.localEulerAngles = mat.ObjectTransform.nowRot;
-        if (navLines == null || navLines.Count <= 0)
+            go.transform.localScale = mat.ObjectTransform.nowScale;
-        {
+        }
-            Debug.Log("当前景点未绘制路线");
+        else
-            return;
+        {
-        }
+            go.transform.localPosition = Vector3.zero;
-        RouteCtr.SetRouteValue(navLines);
+            go.transform.localEulerAngles = Vector3.zero;
-    }
+            go.transform.localScale = new Vector3(1, 1, 1);
-    #endregion
+        }
-
+
-    #region 锚点
+        ObjectValue objectValue = new ObjectValue(id, parentid, mat.name, go, go.transform.localPosition, go.transform.localEulerAngles, go.transform.localScale);
-
+        return objectValue;
-    /// <summary>
+    }
-    ///  设置场景锚点
+
-    /// </summary>
+    #endregion
-    /// <param name="listAnchor"></param>
+
-    public void SetAnchor(List<Anchor> listAnchor)
+    #region 路径
-    {
+
-        if (listAnchor == null)
+    /// <summary>
-            return;
+    /// 设置路线数据
-        Anchor anchor;
+    /// </summary>
-        for (int i = 0; i < listAnchor.Count - 1; i++)
+    /// <param name="navLines"></param>
-        {
+    public void SetRouteValue(List<NavLinesItem> navLines)
-            for (int j = 0; j < listAnchor.Count - 1 - i; j++)
+    {
-            {
+        if (navLines == null || navLines.Count <= 0)
-                if (listAnchor[j].id > listAnchor[j + 1].id)
+        {
-                {
+            Debug.Log("当前景点未绘制路线");
-                    anchor = listAnchor[j];
+            return;
-                    listAnchor[j] = listAnchor[j + 1];
+        }
-                    listAnchor[j + 1] = anchor;
+        RouteCtr.SetRouteValue(navLines);
-                }
+    }
-            }
+    #endregion
-        }
+
-       
+    #region 锚点
-        for (int i = 0; i < listAnchor.Count; i++)
+
-        {
+    /// <summary>
-           
+    ///  设置场景锚点
-            // 创建锚点
+    /// </summary>
-            GameManager.Instance.AnchorValue.Add(listAnchor[i], CreateAnchor(listAnchor[i]));
+    /// <param name="listAnchor"></param>
-            GameManager.Instance.AnchorChild.Add(listAnchor[i], AnchorValue[listAnchor[i]].transform.GetChild(0).gameObject);
+    public void SetAnchor(List<Anchor> listAnchor)
-        }  
+    {
-        m_UIAnchorsPanel.SetAnchor(AnchorValue);
+        if (listAnchor == null)
-    }
+            return;
-
+        Anchor anchor;
-    private MeshRenderer CreateAnchor(Anchor anchor)
+        for (int i = 0; i < listAnchor.Count - 1; i++)
-    {
+        {
-        // 创建锚点  给锚点赋值
+            for (int j = 0; j < listAnchor.Count - 1 - i; j++)
-
+            {
-        GameObject anchorObj = GameObject.Instantiate(Resources.Load<GameObject>("Template/Prefab/Anchor"),AnchorsParent);
+                if (listAnchor[j].id > listAnchor[j + 1].id)
-        anchorObj.name = "Anchor" + anchor.id;
+                {
-        /*
+                    anchor = listAnchor[j];
-        VuforiaAnchor vuforiaAnchor = anchorObj.GetComponent<VuforiaAnchor>();
+                    listAnchor[j] = listAnchor[j + 1];
-        vuforiaAnchor.player = GameManager.Instance.m_head.transform;
+                    listAnchor[j + 1] = anchor;
-        if (VuforiaManager.Instance.list_Anchor == null)
+                }
-            VuforiaManager.Instance.list_Anchor = new List<VuforiaAnchor>();
+            }
-        VuforiaManager.Instance.list_Anchor.Add(vuforiaAnchor);*/
+        }
-        var anchorPos = Vector3.zero;
+       
-        Debug.Log(anchor.picturePosition.pointRelativeX+"  "+ WebMapSize.x);
+        for (int i = 0; i < listAnchor.Count; i++)
-        anchorPos = new Vector3((float)anchor.picturePosition.pointRelativeX / WebMapSize.x * MapSize.x, -1f, -(float)anchor.picturePosition.pointRelativeY / WebMapSize.y * MapSize.y);
+        {
-        anchorObj.transform.localPosition = anchorPos;
+           
-
+            // 创建锚点
-        anchorObj.transform.GetChild(0).gameObject.SetActive(false);
+            GameManager.Instance.AnchorValue.Add(listAnchor[i], CreateAnchor(listAnchor[i]));
-
+            GameManager.Instance.AnchorChild.Add(listAnchor[i], AnchorValue[listAnchor[i]].transform.GetChild(0).gameObject);
-        var mesh = anchorObj.GetComponent<MeshRenderer>();
+        }  
-        mesh.enabled = false;
+        m_UIAnchorsPanel.SetAnchor(AnchorValue);
-        //if(anchor.objectTransform!=null)
+    }
-        //{
+
-        //    anchorObj.transform.localPosition = anchor.objectTransform.nowPos;
+    private MeshRenderer CreateAnchor(Anchor anchor)
-        //    anchorObj.transform.localEulerAngles = anchor.objectTransform.nowRot;
+    {
-        //}
+        // 创建锚点  给锚点赋值
-
+
-        if(anchor.objectTransform!=null && anchor.objectTransform.nowScale!=Vector3.zero)
+        GameObject anchorObj = GameObject.Instantiate(Resources.Load<GameObject>("Template/Prefab/Anchor"),AnchorsParent);
-        {
+        anchorObj.name = "Anchor" + anchor.id;
-            anchorObj.transform.localEulerAngles = anchor.objectTransform.nowRot;
+        /*
-            anchorObj.transform.localPosition = anchor.objectTransform.nowPos;          
+        VuforiaAnchor vuforiaAnchor = anchorObj.GetComponent<VuforiaAnchor>();
-        }
+        vuforiaAnchor.player = GameManager.Instance.m_head.transform;
-
+        if (VuforiaManager.Instance.list_Anchor == null)
-
+            VuforiaManager.Instance.list_Anchor = new List<VuforiaAnchor>();
-        return mesh;
+        VuforiaManager.Instance.list_Anchor.Add(vuforiaAnchor);*/
-    } 
+        var anchorPos = Vector3.zero;
-    #endregion
+        Debug.Log(anchor.picturePosition.pointRelativeX+"  "+ WebMapSize.x);
-
+        anchorPos = new Vector3((float)anchor.picturePosition.pointRelativeX / WebMapSize.x * MapSize.x, -1f, -(float)anchor.picturePosition.pointRelativeY / WebMapSize.y * MapSize.y);
-
+        anchorObj.transform.localPosition = anchorPos;
-    #region 触发器判定
+
-
+        anchorObj.transform.GetChild(0).gameObject.SetActive(false);
-    /// <summary>
+
-    /// 当人物进入触发器范围
+        var mesh = anchorObj.GetComponent<MeshRenderer>();
-    /// </summary>
+        mesh.enabled = false;
-    public void OnColliderTriggerEnter(Collider other)
+        //if(anchor.objectTransform!=null)
-    {
+        //{
-        IsTriggerExiting = true;
+        //    anchorObj.transform.localPosition = anchor.objectTransform.nowPos;
-        for (int i = 0; i < ListColliderBoxs.Count; i++)
+        //    anchorObj.transform.localEulerAngles = anchor.objectTransform.nowRot;
-        {
+        //}
-            if (other.name == ListColliderBoxs[i].name)
+
-            {
+        if(anchor.objectTransform!=null && anchor.objectTransform.nowScale!=Vector3.zero)
-                ListShowObjs[i].gameObject.SetActive(true);
+        {
-                Debug.Log(i);
+            anchorObj.transform.localEulerAngles = anchor.objectTransform.nowRot;
-                if (isShowLoacalShowObjs)
+            anchorObj.transform.localPosition = anchor.objectTransform.nowPos;          
-                    ListLocalShowObjs[i].gameObject.SetActive(true);
+        }
-                // 进入景点通知后台
+
-
+
-                HttpSocket.Instance.SendIpToPointTrigger(" ",other.name, CallBack);
+        return mesh;
-
+    } 
-                if (SpoitIndex == i)
+    #endregion
-                {
+
-                    return;
+
-                }
+    #region 触发器判定
-                //进入新区域前关闭当前显示
+
-                if (SpoitIndex >= 0 && IsStartEditor)
+    /// <summary>
-                {
+    /// 当人物进入触发器范围
-                    ListShowObjs[SpoitIndex].gameObject.SetActive(false);
+    /// </summary>
-                   
+    public void OnColliderTriggerEnter(Collider other)
-                    if (isShowLoacalShowObjs)
+    {
-                        ListLocalShowObjs[SpoitIndex].gameObject.SetActive(false);
+        IsTriggerExiting = true;
-                    ListCrystals[SpoitIndex].gameObject.SetActive(true);
+        for (int i = 0; i < ListColliderBoxs.Count; i++)
-                    m_EditorPanel.ClosePanel();
+        {
-                }
+            if (other.name == ListColliderBoxs[i].name)
-
+            {
-                //进入新的出发区域
+                ListShowObjs[i].gameObject.SetActive(true);
-                SpoitIndex = i;
+                Debug.Log(i);
-                ListCrystals[SpoitIndex].gameObject.SetActive(false);
+                if (isShowLoacalShowObjs)
-                m_EditorPanel.SetSpoit(SpoitValues[i]);
+                    ListLocalShowObjs[i].gameObject.SetActive(true);
-                StartCoroutine(patch());
+                // 进入景点通知后台
-                return;
+
-            }
+                HttpSocket.Instance.SendIpToPointTrigger(" ",other.name, CallBack);
-        }
+
-        StartCoroutine(patch());
+                if (SpoitIndex == i)
-    }
+                {
-
+                    return;
-    private IEnumerator patch()
+                }
-    {
+                //进入新区域前关闭当前显示
-        yield return new WaitForSeconds(0.005f);
+                if (SpoitIndex >= 0 && IsStartEditor)
-        if (PosRotScale.PosRotScalePatchList.Count != 0)
+                {
-        {
+                    ListShowObjs[SpoitIndex].gameObject.SetActive(false);
-            int temp = 0;
+                   
-            for (int i = 0; i < GameManager.Instance.ObjsParent.childCount; i++)
+                    if (isShowLoacalShowObjs)
-            {
+                        ListLocalShowObjs[SpoitIndex].gameObject.SetActive(false);
-                if (i != 0)
+                    ListCrystals[SpoitIndex].gameObject.SetActive(true);
-                {
+                    m_EditorPanel.ClosePanel();
-                    for (int j = 0; j < GameManager.Instance.ObjsParent.GetChild(i).childCount; j++)
+                }
-                    {
+
-                        for (int k = 0; k < GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).childCount; k++)
+                //进入新的出发区域
-                        {
+                SpoitIndex = i;
-                            GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localPosition = PosRotScale.PosRotScalePatchList[temp].PosPatch;
+                ListCrystals[SpoitIndex].gameObject.SetActive(false);
-                            GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localEulerAngles = PosRotScale.PosRotScalePatchList[temp].RotPatch;
+                m_EditorPanel.SetSpoit(SpoitValues[i]);
-                            GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localScale = PosRotScale.PosRotScalePatchList[temp].ScalePatch;
+                //StartCoroutine(SetPosRotScale());
-                            temp++;
+                return;
-                        }
+            }
-                    }
+        }
-                }
+        //StartCoroutine(SetPosRotScale());
-            }
+    }
-        }
+
-    }
+    public void SetPosRotScale()
-    /// <summary>
+    {
-    /// 当人物退出触发器范围
+        if (PosRotScale.PosRotScalePatchList.Count != 0)
-    /// </summary>
+        {
-    public void OnColliderTriggerExit(Collider other)
+            int temp = 0;
-    {
+            for (int i = 0; i < GameManager.Instance.ObjsParent.childCount; i++)
-        IsTriggerExiting = false;
+            {
-        if (IsStartEditor)
+                if (i != 0)
-        {
+                {
-            return;
+                    for (int j = 0; j < GameManager.Instance.ObjsParent.GetChild(i).childCount; j++)
-        }
+                    {
-        else
+                        for (int k = 0; k < GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).childCount; k++)
-        {
+                        {
-            ListShowObjs[SpoitIndex].gameObject.SetActive(false);
+                            GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localPosition = PosRotScale.PosRotScalePatchList[temp].PosPatch;
-            if (isShowLoacalShowObjs)
+                            GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localEulerAngles = PosRotScale.PosRotScalePatchList[temp].RotPatch;
-                ListLocalShowObjs[SpoitIndex].gameObject.SetActive(false);
+                            GameManager.Instance.ObjsParent.GetChild(i).GetChild(j).GetChild(k).localScale = PosRotScale.PosRotScalePatchList[temp].ScalePatch;
-            ListCrystals[SpoitIndex].gameObject.SetActive(true);
+                            temp++;
-            m_EditorPanel.ClosePanel();
+                        }
-            SpoitIndex = -1;
+                    }
-        }
+                }
-    }
+            }
-
+        }
-    /// <summary>
+    }
-    /// 更新景点信息
+    /// <summary>
-    /// </summary>
+    /// 当人物退出触发器范围
-    public void UpdateSpoitValue()
+    /// </summary>
-    {
+    public void OnColliderTriggerExit(Collider other)
-        var spoit = SpoitValues[SpoitIndex];
+    {
-        var objvalues = ObjectValues[spoit.id];
+        IsTriggerExiting = false;
-        spoit.spoitTf.SavePos(objvalues.nowPos, objvalues.nowRot, objvalues.nowScale);
+        if (IsStartEditor)
-        //X\Y\W\H
+        {
-        var collidervalue = ColliderObjectValues[SpoitIndex];
+            return;
-        var collider = collidervalue.Object;
+        }
-
+        else
-        var pos = collidervalue.nowPos;
+        {
-        var w = collidervalue.nowScale.x;
+            ListShowObjs[SpoitIndex].gameObject.SetActive(false);
-        var h = collidervalue.nowScale.z;
+            if (isShowLoacalShowObjs)
-
+                ListLocalShowObjs[SpoitIndex].gameObject.SetActive(false);
-
+            ListCrystals[SpoitIndex].gameObject.SetActive(true);
-        var webpos = new Vector3(Math.Abs(pos.x) / MapSize.x * WebMapSize.x, 0, Math.Abs(pos.z) / MapSize.y * WebMapSize.y);
+            m_EditorPanel.ClosePanel();
-        var webw = w / MapSize.x * WebMapSize.x;
+            SpoitIndex = -1;
-        var webh = h / MapSize.y * WebMapSize.y;
+        }
-        spoit.SpoitTransform[0].areaRelativeX = webpos.x;
+    }
-        spoit.SpoitTransform[0].areaRelativeY = webpos.z;
+
-        spoit.SpoitTransform[0].areaRelativeW = webw;
+    /// <summary>
-        spoit.SpoitTransform[0].areaRelativeH = webh;
+    /// 更新景点信息
-
+    /// </summary>
-        spoit.spoitTf.SavePos(objvalues.nowPos, objvalues.nowRot, objvalues.nowScale);
+    public void UpdateSpoitValue()
-
+    {
-
+        var spoit = SpoitValues[SpoitIndex];
-        if (objvalues.Object == null)
+        var objvalues = ObjectValues[spoit.id];
-        {
+        spoit.spoitTf.SavePos(objvalues.nowPos, objvalues.nowRot, objvalues.nowScale);
-            RemoveSpoitObjectValue(spoit.id);
+        //X\Y\W\H
-            spoit.material = new List<MaterialObl>();
+        var collidervalue = ColliderObjectValues[SpoitIndex];
-        }
+        var collider = collidervalue.Object;
-        else
+
-        {
+        var pos = collidervalue.nowPos;
-            var mats = spoit.material;
+        var w = collidervalue.nowScale.x;
-            var objvalue = objvalues.ChildrenObj;
+        var h = collidervalue.nowScale.z;
-
+
-            for (int j = 0; j < mats.Count; j++)
+
-            {
+        var webpos = new Vector3(Math.Abs(pos.x) / MapSize.x * WebMapSize.x, 0, Math.Abs(pos.z) / MapSize.y * WebMapSize.y);
-                var matobj = mats[j];
+        var webw = w / MapSize.x * WebMapSize.x;
-                var obis = objvalue[j];
+        var webh = h / MapSize.y * WebMapSize.y;
-                matobj.objectTransform.SavePos(obis.nowPos, obis.nowRot, obis.nowScale);
+        spoit.SpoitTransform[0].areaRelativeX = webpos.x;
-
+        spoit.SpoitTransform[0].areaRelativeY = webpos.z;
-                for (int m = 0; m < matobj.materialList.Count; m++)
+        spoit.SpoitTransform[0].areaRelativeW = webw;
-                {
+        spoit.SpoitTransform[0].areaRelativeH = webh;
-                    var childrenobj = obis.ChildrenObj[m];
+
-                    var mat = matobj.materialList[m];
+        spoit.spoitTf.SavePos(objvalues.nowPos, objvalues.nowRot, objvalues.nowScale);
-
+
-                    if (childrenobj.Object == null)
+
-                    {
+        if (objvalues.Object == null)
-                        obis.ChildrenObj.RemoveAt(m);
+        {
-                        matobj.materialList.RemoveAt(m);
+            RemoveSpoitObjectValue(spoit.id);
-                        break;
+            spoit.material = new List<MaterialObl>();
-                    }
+        }
-
+        else
-                    mat.ObjectTransform.SavePos(childrenobj.nowPos, childrenobj.nowRot, childrenobj.nowScale);
+        {
-                }
+            var mats = spoit.material;
-                matobj.select = true;
+            var objvalue = objvalues.ChildrenObj;
-
+
-                if (obis.ChildrenObj.Count <= 0)
+            for (int j = 0; j < mats.Count; j++)
-                {
+            {
-                    mats.RemoveAt(j);
+                var matobj = mats[j];
-                    objvalue.RemoveAt(j);
+                var obis = objvalue[j];
-                    Destroy(obis.Object);
+                matobj.objectTransform.SavePos(obis.nowPos, obis.nowRot, obis.nowScale);
-                    break;
+
-                }
+                for (int m = 0; m < matobj.materialList.Count; m++)
-            }
+                {
-        }
+                    var childrenobj = obis.ChildrenObj[m];
-        SpoitValues[SpoitIndex] = spoit;
+                    var mat = matobj.materialList[m];
-
+
-    }
+                    if (childrenobj.Object == null)
-
+                    {
-    public void UpdateEditorUI()
+                        obis.ChildrenObj.RemoveAt(m);
-    {
+                        matobj.materialList.RemoveAt(m);
-        m_EditorPanel.SetSpoit(SpoitValues[SpoitIndex]);
+                        break;
-    }
+                    }
-
+
-    
+                    mat.ObjectTransform.SavePos(childrenobj.nowPos, childrenobj.nowRot, childrenobj.nowScale);
-
+                }
-    #endregion
+                matobj.select = true;
-
+
-    public ObjectValue GetCurrentColliderValue()
+                if (obis.ChildrenObj.Count <= 0)
-    {
+                {
-        return ColliderObjectValues[SpoitIndex];
+                    mats.RemoveAt(j);
-    }
+                    objvalue.RemoveAt(j);
-
+                    Destroy(obis.Object);
-    public void SaveSpoitObjectValue(ObjectValue value)
+                    break;
-    {
+                }
-        if (ObjectValues.ContainsKey(SpoitValues[SpoitIndex].id))
+            }
-        {
+        }
-            ObjectValues[SpoitValues[SpoitIndex].id] = value;
+        SpoitValues[SpoitIndex] = spoit;
-        }
+
-    }
+    }
-
+
-    public void RemoveSpoitObjectValue(int id)
+    public void UpdateEditorUI()
-    {
+    {
-        if (ObjectValues.ContainsKey(id))
+        m_EditorPanel.SetSpoit(SpoitValues[SpoitIndex]);
-        {
+    }
-            ObjectValues.Remove(id);
+
-        }
+    
-    }
+
-
+    #endregion
-    public void SaveCurrentColliderValue(ObjectValue value)
+
-    {
+    public ObjectValue GetCurrentColliderValue()
-        if (ColliderObjectValues.Contains(value))
+    {
-        {
+        return ColliderObjectValues[SpoitIndex];
-            ColliderObjectValues[SpoitIndex] = value;
+    }
-        }
+
-    }
+    public void SaveSpoitObjectValue(ObjectValue value)
-
+    {
-    //计算场景中点云地图比例
+        if (ObjectValues.ContainsKey(SpoitValues[SpoitIndex].id))
-    public void CalMapSize()
+        {
-    {
+            ObjectValues[SpoitValues[SpoitIndex].id] = value;
-       
+        }
-
+    }
-        
+
-        //场景地图比例
+    public void RemoveSpoitObjectValue(int id)
-        var disX = Vector3.Distance(PointA.localPosition, PointD.localPosition);
+    {
-        var disZ = Vector3.Distance(PointA.localPosition, PointB.localPosition);
+        if (ObjectValues.ContainsKey(id))
-
+        {
-        MapSize = new Vector2(disX, disZ);
+            ObjectValues.Remove(id);
-
+        }
-        //Debug.LogFormat("{0}:{1}", "AB", Vector3.Distance(PointA.localPosition, PointB.localPosition));
+    }
-        //Debug.LogFormat("{0}:{1}", "CD", Vector3.Distance(PointC.localPosition, PointD.localPosition));
+
-        //Debug.LogFormat("{0}:{1}", "AD", Vector3.Distance(PointA.localPosition, PointD.localPosition));
+    public void SaveCurrentColliderValue(ObjectValue value)
-        //Debug.LogFormat("{0}:{1}", "BC", Vector3.Distance(PointB.localPosition, PointC.localPosition));
+    {
-    }
+        if (ColliderObjectValues.Contains(value))
-
+        {
-    public void CallBack(string message)
+            ColliderObjectValues[SpoitIndex] = value;
-    {
+        }
-
+    }
-    }
+
-}
+    //计算场景中点云地图比例
-
+    public void CalMapSize()
-[Serializable]
+    {
-public class ObjectValue
+       
-{
+
-    /// <summary>
+        
-    /// 景点ID
+        //场景地图比例
-    /// </summary>
+        var disX = Vector3.Distance(PointA.localPosition, PointD.localPosition);
-    [SerializeField]
+        var disZ = Vector3.Distance(PointA.localPosition, PointB.localPosition);
-    public int ID;
+
-    /// <summary>
+        MapSize = new Vector2(disX, disZ);
-    /// 当前物体名称
+
-    /// </summary>
+        //Debug.LogFormat("{0}:{1}", "AB", Vector3.Distance(PointA.localPosition, PointB.localPosition));
-    [SerializeField]
+        //Debug.LogFormat("{0}:{1}", "CD", Vector3.Distance(PointC.localPosition, PointD.localPosition));
-    public string matName;
+        //Debug.LogFormat("{0}:{1}", "AD", Vector3.Distance(PointA.localPosition, PointD.localPosition));
-    /// <summary>
+        //Debug.LogFormat("{0}:{1}", "BC", Vector3.Distance(PointB.localPosition, PointC.localPosition));
-    /// 父物体ID
+    }
-    /// -1表示当期物体为景点
+
-    /// </summary>
+    public void CallBack(string message)
-    [SerializeField]
+    {
-    public int parentID;
+
-    /// <summary>
+    }
-    /// 对应的物体
+}
-    /// </summary>
+
-    [SerializeField]
+[Serializable]
-    public GameObject Object;
+public class ObjectValue
-    /// <summary>
+{
-    /// 子物体
+    /// <summary>
-    /// </summary>
+    /// 景点ID
-    [SerializeField]
+    /// </summary>
-    public List<ObjectValue> ChildrenObj;
+    [SerializeField]
-
+    public int ID;
-    public Vector3 startPos { get; set; }
+    /// <summary>
-    public Vector3 startRot { get; set; }
+    /// 当前物体名称
-    public Vector3 startScale { get; set; }
+    /// </summary>
-
+    [SerializeField]
-    public Vector3 nowPos { get; set; }
+    public string matName;
-    public Vector3 nowRot { get; set; }
+    /// <summary>
-    public Vector3 nowScale { get; set; }
+    /// 父物体ID
-
+    /// -1表示当期物体为景点
-
+    /// </summary>
-
+    [SerializeField]
-    public ObjectValue()
+    public int parentID;
-    {
+    /// <summary>
-        ChildrenObj = new List<ObjectValue>();
+    /// 对应的物体
-        parentID = -1;
+    /// </summary>
-    }
+    [SerializeField]
-    /// <summary>
+    public GameObject Object;
-    /// 
+    /// <summary>
-    /// </summary>
+    /// 子物体
-    /// <param name="id">景点对应的index</param>
+    /// </summary>
-    /// <param name="parentid">景点ID</param>
+    [SerializeField]
-    /// <param name="name"></param>
+    public List<ObjectValue> ChildrenObj;
-    /// <param name="object"></param>
+
-    /// <param name="pos"></param>
+    public Vector3 startPos { get; set; }
-    /// <param name="Rot"></param>
+    public Vector3 startRot { get; set; }
-    /// <param name="Scale"></param>
+    public Vector3 startScale { get; set; }
-    public ObjectValue(int id, int parentid, string name, GameObject @object, Vector3 pos, Vector3 Rot, Vector3 Scale)
+
-    {
+    public Vector3 nowPos { get; set; }
-        ID = id;
+    public Vector3 nowRot { get; set; }
-        parentID = parentid;
+    public Vector3 nowScale { get; set; }
-        matName = name;
+
-        Object = @object;
+
-        ChildrenObj = new List<ObjectValue>();
+
-
+    public ObjectValue()
-        startPos = pos;
+    {
-        nowPos = pos;
+        ChildrenObj = new List<ObjectValue>();
-
+        parentID = -1;
-        startRot = Rot;
+    }
-        nowRot = Rot;
+    /// <summary>
-
+    /// 
-        startScale = Scale;
+    /// </summary>
-        nowScale = Scale;
+    /// <param name="id">景点对应的index</param>
-    }
+    /// <param name="parentid">景点ID</param>
-
+    /// <param name="name"></param>
-    public ObjectValue(int id, int parentid, string name, GameObject @object)
+    /// <param name="object"></param>
-    {
+    /// <param name="pos"></param>
-        ID = id;
+    /// <param name="Rot"></param>
-        parentID = parentid;
+    /// <param name="Scale"></param>
-        matName = name;
+    public ObjectValue(int id, int parentid, string name, GameObject @object, Vector3 pos, Vector3 Rot, Vector3 Scale)
-        Object = @object;
+    {
-        ChildrenObj = new List<ObjectValue>();
+        ID = id;
-
+        parentID = parentid;
-        startPos = @object.transform.localPosition;
+        matName = name;
-        nowPos = startPos;
+        Object = @object;
-
+        ChildrenObj = new List<ObjectValue>();
-        startRot = @object.transform.localEulerAngles;
+
-        nowRot = startRot;
+        startPos = pos;
-
+        nowPos = pos;
-        startScale = @object.transform.localScale;
+
-        nowScale = startScale;
+        startRot = Rot;
-    }
+        nowRot = Rot;
-
+
-
+        startScale = Scale;
-    /// <summary>
+        nowScale = Scale;
-    /// 初始化时当前位置和初始位置
+    }
-    /// 此方法只在组合素材时使用
+
-    /// </summary>
+    public ObjectValue(int id, int parentid, string name, GameObject @object)
-    public void InitTransform()
+    {
-    {
+        ID = id;
-        if (Object != null)
+        parentID = parentid;
-        {
+        matName = name;
-            startPos = Object.transform.localPosition;
+        Object = @object;
-            nowPos = Object.transform.localPosition;
+        ChildrenObj = new List<ObjectValue>();
-
+
-            startRot = Object.transform.localEulerAngles;
+        startPos = @object.transform.localPosition;
-            nowRot = Object.transform.localEulerAngles;
+        nowPos = startPos;
-
+
-            startScale = Object.transform.localScale;
+        startRot = @object.transform.localEulerAngles;
-            nowScale = Object.transform.localScale;
+        nowRot = startRot;
-        }
+
-    }
+        startScale = @object.transform.localScale;
-
+        nowScale = startScale;
-    /// <summary>
+    }
-    /// 编辑物体坐标时初始化坐标
+
-    /// </summary>
+
-    public void InitObjTransform()
+    /// <summary>
-    {
+    /// 初始化时当前位置和初始位置
-        Object.transform.localPosition = startPos;
+    /// 此方法只在组合素材时使用
-        Object.transform.localEulerAngles = startRot;
+    /// </summary>
-        Object.transform.localScale = startScale;
+    public void InitTransform()
-
+    {
-        nowPos = startPos;
+        if (Object != null)
-        nowRot = startRot;
+        {
-        nowScale = startScale;
+            startPos = Object.transform.localPosition;
-    }
+            nowPos = Object.transform.localPosition;
-    /// <summary>
+
-    /// 编辑物体坐标时保存坐标信息
+            startRot = Object.transform.localEulerAngles;
-    /// </summary>
+            nowRot = Object.transform.localEulerAngles;
-    public void SaveObjTransfoem()
+
-    {
+            startScale = Object.transform.localScale;
-        if (Object != null)
+            nowScale = Object.transform.localScale;
-        {
+        }
-            nowPos = Object.transform.localPosition;
+    }
-            nowRot = Object.transform.localEulerAngles;
+
-            nowScale = Object.transform.localScale;
+    /// <summary>
-        }
+    /// 编辑物体坐标时初始化坐标
-    }
+    /// </summary>
-}
+    public void InitObjTransform()
-
+    {
-
+        Object.transform.localPosition = startPos;
+        Object.transform.localEulerAngles = startRot;
+        Object.transform.localScale = startScale;
+
+        nowPos = startPos;
+        nowRot = startRot;
+        nowScale = startScale;
+    }
+    /// <summary>
+    /// 编辑物体坐标时保存坐标信息
+    /// </summary>
+    public void SaveObjTransfoem()
+    {
+        if (Object != null)
+        {
+            nowPos = Object.transform.localPosition;
+            nowRot = Object.transform.localEulerAngles;
+            nowScale = Object.transform.localScale;
+        }
+    }
+}
+
+