public void Add(FunctionalPoint fp) { funcPointList.Add(fp); }
static void EditLayout() { // sceneInfo GUILayout.BeginVertical(); GUILayout.Label("Chapter:"); scene_.CID = GUILayout.TextField(scene_.CID); GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("SceneID:"); scene_.ID = GUILayout.TextField(scene_.ID); GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("SceneName:"); scene_.Name = GUILayout.TextField(scene_.Name); GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("BattleName:"); scene_.BattleName = GUILayout.TextField(scene_.BattleName); GUILayout.EndVertical(); GUILayout.Space(5); TotalScrollPos_ = GUILayout.BeginScrollView(TotalScrollPos_, GUILayout.Width(600), GUILayout.Height(600)); // npcInfo GUILayout.Box("NpcInfo"); if (scene_.npcList.Count > 0) { NpcScrollPos_ = GUILayout.BeginScrollView(NpcScrollPos_, GUILayout.Width(300), GUILayout.Height(200)); for (int i = 0; i < scene_.npcList.Count; ++i) { GUILayout.BeginHorizontal(); GUILayout.Label("ID"); ((Npc)scene_.npcList[i]).ID = GUILayout.TextField(((Npc)scene_.npcList[i]).ID); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Position" + new Vector3(((Npc)scene_.npcList[i]).X, ((Npc)scene_.npcList[i]).Y, ((Npc)scene_.npcList[i]).Z)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Rotation" + new Quaternion(((Npc)scene_.npcList[i]).RX, ((Npc)scene_.npcList[i]).RY, ((Npc)scene_.npcList[i]).RZ, ((Npc)scene_.npcList[i]).RW)); GUILayout.EndHorizontal(); if (scene_.npcList.Count != npcObjList_.Count) { GameObject go = GameObject.CreatePrimitive(PrimitiveType.Capsule); go.transform.parent = root.transform; go.transform.position = new Vector3(((Npc)scene_.npcList[i]).X, ((Npc)scene_.npcList[i]).Y, ((Npc)scene_.npcList[i]).Z); go.transform.rotation = new Quaternion(((Npc)scene_.npcList[i]).RX, ((Npc)scene_.npcList[i]).RY, ((Npc)scene_.npcList[i]).RZ, ((Npc)scene_.npcList[i]).RW); npcObjList_.Add(go); } ((Npc)scene_.npcList[i]).X = npcObjList_[i].transform.position.x; ((Npc)scene_.npcList[i]).Y = npcObjList_[i].transform.position.y; ((Npc)scene_.npcList[i]).Z = npcObjList_[i].transform.position.z; ((Npc)scene_.npcList[i]).RX = npcObjList_[i].transform.rotation.x; ((Npc)scene_.npcList[i]).RY = npcObjList_[i].transform.rotation.y; ((Npc)scene_.npcList[i]).RZ = npcObjList_[i].transform.rotation.z; ((Npc)scene_.npcList[i]).RW = npcObjList_[i].transform.rotation.w; if (GUILayout.Button("Delete")) { scene_.npcList.RemoveAt(i); DestroyImmediate(npcObjList_[i]); npcObjList_.RemoveAt(i); } GUILayout.Space(15); } GUILayout.EndScrollView(); } else { GUILayout.Label("Empty"); } GUILayout.Space(5); // monsterInfo GUILayout.Box("ZoneInfo"); ZoneScrollPos_ = GUILayout.BeginScrollView(ZoneScrollPos_, GUILayout.Width(300), GUILayout.Height(200)); for (int i = 0; i < scene_.zoneList.Count; ++i) { GUILayout.BeginHorizontal(); GUILayout.Label("ID"); GUILayout.Label(((Zone)scene_.zoneList[i]).ID); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Radius " + ((Zone)scene_.zoneList[i]).Radius); GUILayout.Label("Center" + new Vector3(((Zone)scene_.zoneList[i]).CenterX, 0f, ((Zone)scene_.zoneList[i]).CenterZ)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("MinCount"); ((Zone)scene_.zoneList[i]).MonsterMin = GUILayout.TextField(((Zone)scene_.zoneList[i]).MonsterMin); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("MaxCount"); ((Zone)scene_.zoneList[i]).MonsterMax = GUILayout.TextField(((Zone)scene_.zoneList[i]).MonsterMax); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Rate"); ((Zone)scene_.zoneList[i]).Rate = GUILayout.TextField(((Zone)scene_.zoneList[i]).Rate); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("MonsterGroup"); ((Zone)scene_.zoneList[i]).MonsterGroup = GUILayout.TextField(((Zone)scene_.zoneList[i]).MonsterGroup); GUILayout.EndHorizontal(); if (scene_.zoneList.Count != zoneObjList_.Count) { GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere); go.transform.localScale = new Vector3(1f, 0.1f, 1f); DestroyImmediate(go.GetComponent <SphereCollider>()); go.transform.parent = root.transform; go.transform.position = new Vector3(((Zone)scene_.zoneList[i]).CenterX, ((Zone)scene_.zoneList[i]).CenterY, ((Zone)scene_.zoneList[i]).CenterZ); go.transform.localScale = new Vector3(((Zone)scene_.zoneList[i]).Radius * 2f, 0.1f, ((Zone)scene_.zoneList[i]).Radius * 2f); zoneObjList_.Add(go); } ((Zone)scene_.zoneList[i]).CenterX = zoneObjList_[i].transform.position.x; ((Zone)scene_.zoneList[i]).CenterY = zoneObjList_[i].transform.position.y; ((Zone)scene_.zoneList[i]).CenterZ = zoneObjList_[i].transform.position.z; ((Zone)scene_.zoneList[i]).Radius = zoneObjList_[i].transform.localScale.x / 2f; if (GUILayout.Button("Delete")) { scene_.zoneList.RemoveAt(i); DestroyImmediate(zoneObjList_[i]); zoneObjList_.RemoveAt(i); } GUILayout.Space(15); } GUILayout.EndScrollView(); GUILayout.Space(10); // entryInfo GUILayout.Box("EntryInfo"); EntryScrollPos_ = GUILayout.BeginScrollView(EntryScrollPos_, GUILayout.Width(300), GUILayout.Height(200)); for (int i = 0; i < scene_.entryList.Count; ++i) { GUILayout.BeginHorizontal(); GUILayout.Label("ID"); GUILayout.Label(((SceneEntry)scene_.entryList[i]).ID); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); ((SceneEntry)scene_.entryList[i]).isBornPos = GUILayout.Toggle(((SceneEntry)scene_.entryList[i]).isBornPos, "是否当作出生点"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Radius " + ((SceneEntry)scene_.entryList[i]).Radius); GUILayout.Label("Center" + new Vector3(((SceneEntry)scene_.entryList[i]).CenterX, ((SceneEntry)scene_.entryList[i]).CenterY, ((SceneEntry)scene_.entryList[i]).CenterZ)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("AreaNum"); ((SceneEntry)scene_.entryList[i]).areaNum = GUILayout.TextField(((SceneEntry)scene_.entryList[i]).areaNum); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("toSceneID"); ((SceneEntry)scene_.entryList[i]).toSceneID = GUILayout.TextField(((SceneEntry)scene_.entryList[i]).toSceneID); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("toEntryID"); ((SceneEntry)scene_.entryList[i]).toEntryID = GUILayout.TextField(((SceneEntry)scene_.entryList[i]).toEntryID); GUILayout.EndHorizontal(); if (scene_.entryList.Count != entryObjList_.Count) { GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere); go.transform.localScale = new Vector3(1f, 0.1f, 1f); DestroyImmediate(go.GetComponent <SphereCollider>()); go.transform.parent = root.transform; go.transform.position = new Vector3(((SceneEntry)scene_.entryList[i]).CenterX, ((SceneEntry)scene_.entryList[i]).CenterY, ((SceneEntry)scene_.entryList[i]).CenterZ); go.transform.localScale = new Vector3(((SceneEntry)scene_.entryList[i]).Radius * 2f, 0.1f, ((SceneEntry)scene_.entryList[i]).Radius * 2f); entryObjList_.Add(go); } ((SceneEntry)scene_.entryList[i]).CenterX = entryObjList_[i].transform.position.x; ((SceneEntry)scene_.entryList[i]).CenterY = entryObjList_[i].transform.position.y; ((SceneEntry)scene_.entryList[i]).CenterZ = entryObjList_[i].transform.position.z; ((SceneEntry)scene_.entryList[i]).Radius = entryObjList_[i].transform.localScale.x / 2f; if (GUILayout.Button("Delete")) { scene_.entryList.RemoveAt(i); DestroyImmediate(entryObjList_[i]); entryObjList_.RemoveAt(i); } GUILayout.Space(15); } GUILayout.EndScrollView(); GUILayout.Space(10); // mutifuncPointInfo GUILayout.Box("FunctionalPoints"); FuncPointScrollPos_ = GUILayout.BeginScrollView(FuncPointScrollPos_, GUILayout.Width(500), GUILayout.Height(400)); for (int i = 0; i < scene_.funcPointList.Count; ++i) { GUILayout.BeginHorizontal(); GUILayout.Label("ID"); ((FunctionalPoint)scene_.funcPointList[i]).ID = i.ToString(); GUILayout.Label(i.ToString()); GUILayout.EndHorizontal(); GUI.color = Color.yellow; GUILayout.BeginHorizontal(); GUILayout.Label("NpcId"); GUILayout.Label(((FunctionalPoint)scene_.funcPointList[i]).NpcId); GUILayout.EndHorizontal(); GUI.color = Color.white; GUILayout.BeginHorizontal(); GUILayout.Label("Position" + new Vector3(((FunctionalPoint)scene_.funcPointList[i]).X, ((FunctionalPoint)scene_.funcPointList[i]).Y, ((FunctionalPoint)scene_.funcPointList[i]).Z)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Rotation" + new Quaternion(((FunctionalPoint)scene_.funcPointList[i]).RX, ((FunctionalPoint)scene_.funcPointList[i]).RY, ((FunctionalPoint)scene_.funcPointList[i]).RZ, ((FunctionalPoint)scene_.funcPointList[i]).RW)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Type"); ((FunctionalPoint)scene_.funcPointList[i]).type = (FunctionalPointType)GUILayout.SelectionGrid((int)((FunctionalPoint)scene_.funcPointList[i]).type, new string[] { "FPT_None", "FPT_Tongji", "FPT_Mogu", "FPT_SinglePK", "FPT_TeamPK", "FPT_Npc", "FPT_Xiji" }, 5); GUILayout.EndHorizontal(); if (scene_.funcPointList.Count != funcObjList_.Count) { GameObject go = GameObject.CreatePrimitive(PrimitiveType.Capsule); go.name = "FunctionalPoint"; go.GetComponent <MeshRenderer>().material = funcPointMat_; go.transform.parent = root.transform; go.transform.position = new Vector3(((FunctionalPoint)scene_.funcPointList[i]).X, ((FunctionalPoint)scene_.funcPointList[i]).Y, ((FunctionalPoint)scene_.funcPointList[i]).Z); go.transform.rotation = new Quaternion(((FunctionalPoint)scene_.funcPointList[i]).RX, ((FunctionalPoint)scene_.funcPointList[i]).RY, ((FunctionalPoint)scene_.funcPointList[i]).RZ, ((FunctionalPoint)scene_.funcPointList[i]).RW); funcObjList_.Add(go); } ((FunctionalPoint)scene_.funcPointList[i]).X = funcObjList_[i].transform.position.x; ((FunctionalPoint)scene_.funcPointList[i]).Y = funcObjList_[i].transform.position.y; ((FunctionalPoint)scene_.funcPointList[i]).Z = funcObjList_[i].transform.position.z; ((FunctionalPoint)scene_.funcPointList[i]).RX = funcObjList_[i].transform.rotation.x; ((FunctionalPoint)scene_.funcPointList[i]).RY = funcObjList_[i].transform.rotation.y; ((FunctionalPoint)scene_.funcPointList[i]).RZ = funcObjList_[i].transform.rotation.z; ((FunctionalPoint)scene_.funcPointList[i]).RW = funcObjList_[i].transform.rotation.w; if (GUILayout.Button("Delete")) { scene_.funcPointList.RemoveAt(i); DestroyImmediate(funcObjList_[i]); funcObjList_.RemoveAt(i); } GUILayout.Space(15); } GUILayout.EndScrollView(); GUILayout.Space(10); GUILayout.EndScrollView(); GUILayout.BeginHorizontal(); if (GUILayout.Button("AddMonster")) { GameObject monsterArea = GameObject.CreatePrimitive(PrimitiveType.Sphere); monsterArea.transform.localScale = new Vector3(1f, 0.1f, 1f); DestroyImmediate(monsterArea.GetComponent <SphereCollider>()); monsterArea.transform.parent = root.transform; Zone zone = new Zone(); zone.ID = (scene_.zoneList.Count + 1).ToString(); zoneObjList_.Add(monsterArea); scene_.Add(zone); } if (GUILayout.Button("AddEntry")) { GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere); go.transform.localScale = new Vector3(1f, 0.1f, 1f); DestroyImmediate(go.GetComponent <SphereCollider>()); go.transform.parent = root.transform; SceneEntry entry = new SceneEntry(); entry.ID = (scene_.entryList.Count + 1).ToString(); entryObjList_.Add(go); scene_.Add(entry); } if (GUILayout.Button("AddFuncPoint")) { GameObject go = GameObject.CreatePrimitive(PrimitiveType.Capsule); go.name = "FunctionalPoint"; go.GetComponent <MeshRenderer>().material = funcPointMat_; go.transform.parent = root.transform; FunctionalPoint fp = new FunctionalPoint(); funcObjList_.Add(go); scene_.Add(fp); } if (GUILayout.Button("CombieNpcPoint")) { for (int i = 0; i < scene_.npcList.Count; ++i) { GameObject go = GameObject.CreatePrimitive(PrimitiveType.Capsule); go.name = "FunctionalPoint"; go.GetComponent <MeshRenderer>().material = funcPointMat_; go.transform.parent = root.transform; go.transform.position = new Vector3(((Npc)scene_.npcList[i]).X, ((Npc)scene_.npcList[i]).Y, ((Npc)scene_.npcList[i]).Z); go.transform.rotation = new Quaternion(((Npc)scene_.npcList[i]).RX, ((Npc)scene_.npcList[i]).RY, ((Npc)scene_.npcList[i]).RZ, ((Npc)scene_.npcList[i]).RW); funcObjList_.Add(go); FunctionalPoint fp = new FunctionalPoint(); fp.NpcId = ((Npc)scene_.npcList[i]).ID; fp.type = FunctionalPointType.FPT_Npc; scene_.Add(fp); } scene_.npcList.Clear(); npcObjList_.Clear(); } // createXML if (GUILayout.Button("Save")) { if (EditorUtility.DisplayDialog("Save", "确定保存数据吗?", "似的", "不")) { Save(scene_); EditorUtility.DisplayDialog("Alert", "保存完毕", "确定"); } } // update if (GUILayout.Button("Update")) { UpdateEnviroment(); } GUILayout.EndHorizontal(); SceneView.RepaintAll(); }