예제 #1
0
 public void Add(FunctionalPoint fp)
 {
     funcPointList.Add(fp);
 }
예제 #2
0
    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();
    }