From 38bbe9af958cac89c56b35ee6c7ba5b2ed44185c Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期一, 21 一月 2019 21:34:33 +0800
Subject: [PATCH] 382 地图编辑器逻辑提交

---
 Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs |   79 ++++++++++++++++++++++++++++++++++++---
 1 files changed, 73 insertions(+), 6 deletions(-)

diff --git a/Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs b/Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
index 21ef2bf..5f26db0 100644
--- a/Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
+++ b/Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
@@ -20,6 +20,41 @@
         [HideInInspector]
         private string newSceneObjResName = "";
 
+        public override void Save(BinaryWriter bw)
+        {
+            base.Save(bw);
+            bw.Write(sceneObjList.Count);
+            foreach (var _sceneObject in sceneObjList)
+            {
+                _sceneObject.Save(bw);
+            }
+        }
+
+        public override void Export(BinaryWriter bw)
+        {
+            base.Export(bw);
+            bw.Write(sceneObjList.Count);
+            foreach (var _sceneObject in sceneObjList)
+            {
+                _sceneObject.Export(bw);
+            }
+        }
+
+        public override void Load(BinaryReader br)
+        {
+            base.Load(br);
+            int _count = br.ReadInt32();
+            for (int i = 0; i < _count; ++i)
+            {
+                string _resName = br.ReadString();
+                var _sceneData = CreateSceneObject(_resName);
+                _sceneData.transform.SetParent(transform);
+                _sceneData.Load(br);
+
+                sceneObjList.Add(_sceneData);
+            }
+        }
+
         public override bool DrawUI(GUISkin guiSkin)
         {
             bool _result = false;
@@ -58,8 +93,7 @@
                 newSceneObjResName = EditorGUILayout.TextField(newSceneObjResName, guiSkin.textField, GUILayout.Width(100), GUILayout.Height(20));
                 if (GUILayout.Button("娣诲姞", guiSkin.button, GUILayout.Width(60), GUILayout.Height(22)))
                 {
-                    Debug.Log("!!!");
-                    var _sceneObject = CreateSceneObject();
+                    var _sceneObject = CreateSceneObject(newSceneObjResName);
                     if (_sceneObject)
                     {
                         sceneObjList.Add(_sceneObject);
@@ -70,7 +104,40 @@
 
                 if (showSceneObjList)
                 {
+                    for (int i = sceneObjList.Count - 1; i >= 0; --i)
+                    {
+                        EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
+                        EditorGUILayout.LabelField(string.Format("{0}. ResName", (i + 1)), guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(80));
+                        var _npcID = sceneObjList[i].resName;
+                        EditorGUILayout.TextField(sceneObjList[i].resName, guiSkin.textField, GUILayout.Height(20));
+                        sceneObjList[i].isObstacle = GUILayout.Toggle(sceneObjList[i].isObstacle, "闅滅", guiSkin.button, GUILayout.Width(50), GUILayout.Height(20));
+                        if (GUILayout.Button("瀹氶珮", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
+                        {
+                            Vector3 _pos = sceneObjList[i].transform.position;
+                            _pos.y = 0;
+                            RaycastHit _hit;
 
+                            Ray _ray = new Ray(_pos + Vector3.up * 100, Vector3.down);
+                            if (Physics.Raycast(_ray, out _hit, 200, LayerUtility.WalkbleMask))
+                            {
+                                sceneObjList[i].transform.position = _hit.point;
+                            }
+                        }
+                        if (GUILayout.Button("鏌ユ壘", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
+                        {
+                            Selection.activeGameObject = sceneObjList[i].gameObject;
+                            if (Selection.activeGameObject)
+                            {
+                                SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
+                            }
+                        }
+                        if (GUILayout.Button("鍒犻櫎", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
+                        {
+                            DestroyImmediate(sceneObjList[i].gameObject);
+                            sceneObjList.RemoveAt(i);
+                        }
+                        EditorGUILayout.EndHorizontal();
+                    }
                 }
                 EditorGUILayout.EndVertical();
             }
@@ -80,11 +147,11 @@
             return _result;
         }
 
-        private Bhv_SceneObjectData CreateSceneObject()
+        private Bhv_SceneObjectData CreateSceneObject(string sceneName = null)
         {
-            if (!string.IsNullOrEmpty(newSceneObjResName))
+            if (!string.IsNullOrEmpty(sceneName))
             {
-                string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + newSceneObjResName + ".prefab";
+                string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + sceneName + ".prefab";
                 var _obj = AssetDatabase.LoadAssetAtPath<GameObject>(_path);
                 if (!_obj)
                 {
@@ -93,7 +160,7 @@
                 }
                 _obj = Instantiate(_obj);
                 var _sceneObjData = _obj.AddComponent<Bhv_SceneObjectData>();
-                _sceneObjData.resName = newSceneObjResName;
+                _sceneObjData.resName = sceneName;
                 RaycastHit _hit;
                 Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0));
                 if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask))

--
Gitblit v1.8.0