using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEngine.AI;
using System.IO;
using System.Text;
using System;

public class SceneToolFloor
{
    [MenuItem("SceneTool/SetFloorMessage")]//添加FloorMessage脚本绑定楼层信息
    public static void SetFloorMessage()
    {
        Transform neiParent = GameObject.Find("shinei").transform.GetChild(0);
        for (int i = 0; i < neiParent.childCount; i++)
        {
            //Debug.Log(neiParent.GetChild(i).name);
            if (!neiParent.GetChild(i).GetComponent<FloorMessage>())
            {
                neiParent.GetChild(i).gameObject.AddComponent<FloorMessage>();
            }
            FloorMessage msg = neiParent.GetChild(i).GetComponent<FloorMessage>();
            msg.targetTrans = GetTarget(neiParent.GetChild(i));
            msg.buildNum = neiParent.name;
            if (!neiParent.GetChild(i).name.ToLower().Contains("m"))
            {
                string floornum = neiParent.GetChild(i).name.Substring
                    (neiParent.GetChild(i).name.ToLower().IndexOf("nei") + 3/*, neiParent.GetChild(i).name.Length - 4*/);

                msg.floorNum = int.Parse(floornum);
                msg.interlayerNum = 0;
            }
            else
            {
                string floornum = neiParent.GetChild(i).name.Substring(4);
                msg.floorNum = int.Parse(floornum);
                msg.interlayerNum = 1;
            }
        }
        Transform waiParent = GameObject.Find("shiwai").transform.GetChild(0);
        for (int i = 0; i < waiParent.childCount; i++)
        {
            //Debug.Log(waiParent.GetChild(i).name);
            if (!waiParent.GetChild(i).GetComponent<FloorMessage>())
            {
                waiParent.GetChild(i).gameObject.AddComponent<FloorMessage>();
            }
            FloorMessage msg = waiParent.GetChild(i).GetComponent<FloorMessage>();
            msg.buildNum = waiParent.name;
            if (!waiParent.GetChild(i).name.ToLower().Contains("m"))
            {
                string floornum = waiParent.GetChild(i).name.Substring
                    (waiParent.GetChild(i).name.ToLower().IndexOf("wai") + 3/*, waiParent.GetChild(i).name.Length - 4*/);
                msg.floorNum = int.Parse(floornum);
                msg.interlayerNum = 0;
            }
            else
            {
                string floornum = waiParent.GetChild(i).name.Substring(4);
                msg.floorNum = int.Parse(floornum);
                msg.interlayerNum = 1;
            }
        }
    }
    static Transform GetTarget(Transform parent)
    {
        for (int i = 0; i < parent.childCount; i++)
        {
            if (parent.GetChild(i).name.ToLower().Contains("_floor")
                || parent.GetChild(i).name.ToLower().Contains("-floor")
                )
            {
                return parent.GetChild(i);
            }
        }

        return parent;
    }
    [MenuItem("SceneTool/SetNavLayershinei")]//添加寻路层(选中shinei对象设置,注:扶梯情况特殊没有包含)
    public static void SetNavLayer()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        CloneableEnums shineienums = GameObject.Find("CloneAbleEnumsParent").transform.Find("ShiNeiFloor").GetComponent<CloneableEnums>();
        for (int i = 0; i < obj.Length; i++)
        {
            if (obj[i].name.ToLower().Contains("_floor") ||//地面
                obj[i].name.ToLower().Contains("_floor") ||//地面
                obj[i].name.ToLower().Contains("-floor"))
            {

                obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad");
                if (!obj[i].gameObject.GetComponent<MeshCollider>())
                {
                    obj[i].gameObject.AddComponent<MeshCollider>();
                }
                if (!obj[i].gameObject.GetComponent<PathFindingClick>())
                {
                    obj[i].gameObject.AddComponent<PathFindingClick>();
                }
                if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
                {
                    obj[i].gameObject.AddComponent<CreateStaticObjID>();
                }
                if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
                {
                    obj[i].gameObject.AddComponent<CloneGameObjInfo>();
                    //obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                }
                if (!obj[i].gameObject.GetComponent<CloneableEnums>())
                {
                    obj[i].gameObject.AddComponent<CloneableEnums>();
                }
                obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = shineienums.CloneableTypes;

                if (obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Contains(CloneObjType.FirefightingRobot))
                {
                    obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Remove(CloneObjType.FirefightingRobot);
                }
                //    CloneableEnums enumParent = obj[i].gameObject.GetComponent<CloneableEnums>();
                //    GameObject CarRoad = GameObject.Find("FloorNei");
                //    var CloneableEnums = CarRoad.GetComponent<CloneableEnums>();
                //    enumParent.CloneableTypes = CloneableEnums.CloneableTypes;
                if (obj[i].parent.GetComponent<FloorMessage>())
                {
                    FloorMessage fmg = obj[i].parent.GetComponent<FloorMessage>();
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
                }
                if (obj[i].parent.parent.GetComponent<FloorMessage>())
                {
                    FloorMessage fmg = obj[i].parent.parent.GetComponent<FloorMessage>();
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
                }
            }
            //if (obj[i].name.ToLower().Contains("_wall") ||//墙面
            //    obj[i].name.ToLower().Contains("_wall"))
            //{
            //    obj[i].gameObject.layer = LayerMask.NameToLayer("Wall");
            //    //    obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad");
            //    //    if (!obj[i].gameObject.GetComponent<NavMeshModifier>())
            //    //    {
            //    //        obj[i].gameObject.AddComponent<NavMeshModifier>();
            //    //    }
            //    //    NavMeshModifier mod = obj[i].gameObject.GetComponent<NavMeshModifier>();
            //    //    mod.overrideArea = true;
            //    //    mod.area = 1;
            //    //    if (!obj[i].gameObject.GetComponent<MeshCollider>())
            //    //    {
            //    //        obj[i].gameObject.AddComponent<MeshCollider>();
            //    //    }
            //}
            //if (obj[i].name.ToLower().Contains("lt")&& !obj[i].name.ToLower().Contains("name"))//楼梯
            //{
            //    obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad");
            //   if (!obj[i].gameObject.GetComponent<MeshCollider>())
            //    {
            //        obj[i].gameObject.AddComponent<MeshCollider>();
            //    }
            //    if (!obj[i].gameObject.GetComponent<PathFindingClick>())
            //    {
            //        obj[i].gameObject.AddComponent<PathFindingClick>();
            //    }
            //    if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
            //    {
            //        obj[i].gameObject.AddComponent<CreateStaticObjID>();
            //    }
            //    if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
            //    {
            //        obj[i].gameObject.AddComponent<CloneGameObjInfo>();
            //        //obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
            //    }
            //    if (!obj[i].gameObject.GetComponent<CloneableEnums>())
            //    {
            //        obj[i].gameObject.AddComponent<CloneableEnums>();
            //        obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = shineienums.CloneableTypes;

            //    }
            //    if (obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Contains(CloneObjType.FirefightingRobot))
            //    {
            //        obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Remove(CloneObjType.FirefightingRobot);
            //    }
            //    //    CloneableEnums enumParent = obj[i].gameObject.GetComponent<CloneableEnums>();
            //    //    GameObject CarRoad = GameObject.Find("FloorNei");
            //    //    var CloneableEnums = CarRoad.GetComponent<CloneableEnums>();
            //    //    enumParent.CloneableTypes = CloneableEnums.CloneableTypes;
            //    if (obj[i].parent.GetComponent<FloorMessage>())
            //    {
            //        FloorMessage fmg = obj[i].parent.GetComponent<FloorMessage>();
            //        obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
            //        obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
            //        obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
            //        obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
            //    }
            //    if (obj[i].parent.parent.GetComponent<FloorMessage>())
            //    {
            //        FloorMessage fmg = obj[i].parent.parent.GetComponent<FloorMessage>();
            //        obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
            //        obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
            //        obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
            //        obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
            //    }
            //}
        }
    }
    [MenuItem("SceneTool/SetNavLTLayer")]//添加寻路层(选中shinei对象设置,注:扶梯情况特殊没有包含)
    public static void SetNavLTLayer()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        CloneableEnums shineienums = GameObject.Find("CloneAbleEnumsParent").transform.Find("ShiNeiFloor").GetComponent<CloneableEnums>();
        for (int i = 0; i < obj.Length; i++)
        {
            if (obj[i].name.ToUpper().Contains("LT") && obj[i].GetComponent<MeshRenderer>()
                && !obj[i].name.ToUpper().Contains("LTCS"))
            {
                obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad");
                if (!obj[i].gameObject.GetComponent<MeshCollider>())
                {
                    obj[i].gameObject.AddComponent<MeshCollider>();
                }
                if (!obj[i].gameObject.GetComponent<PathFindingClick>())
                {
                    obj[i].gameObject.AddComponent<PathFindingClick>();
                }
                if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
                {
                    obj[i].gameObject.AddComponent<CreateStaticObjID>();
                }
                if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
                {
                    obj[i].gameObject.AddComponent<CloneGameObjInfo>();
                    //obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                }
                if (!obj[i].gameObject.GetComponent<CloneableEnums>())
                {
                    obj[i].gameObject.AddComponent<CloneableEnums>();
                }
                obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = shineienums.CloneableTypes;
                if (obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Contains(CloneObjType.FirefightingRobot))
                {
                    obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Remove(CloneObjType.FirefightingRobot);
                }
                //    CloneableEnums enumParent = obj[i].gameObject.GetComponent<CloneableEnums>();
                //    GameObject CarRoad = GameObject.Find("FloorNei");
                //    var CloneableEnums = CarRoad.GetComponent<CloneableEnums>();
                //    enumParent.CloneableTypes = CloneableEnums.CloneableTypes;
                if (obj[i].parent.GetComponent<FloorMessage>())
                {
                    FloorMessage fmg = obj[i].parent.GetComponent<FloorMessage>();
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
                }
                if (obj[i].parent.parent.GetComponent<FloorMessage>())
                {
                    FloorMessage fmg = obj[i].parent.parent.GetComponent<FloorMessage>();
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
                }
            }

        }
    }

    [MenuItem("SceneTool/GetNavLayerCarRoad")]
    public static void GetNavLayerCarRoad()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        {
            for (int i = 0; i < obj.Length; i++)
            {
                if (obj[i].gameObject.layer == LayerMask.NameToLayer("CarRoad"))
                {
                    // if (!obj[i].gameObject.GetComponent<NavMeshModifier>())
                    {
                        Debug.Log(obj[i].name);
                    }
                }
            }
        }
    }

    [MenuItem("SceneTool/SetNavLayerCarRoad")]//高层设置车辆寻路层,添加脚本及设置脚本属性
    public static void SetNavLayerCarRoad()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        CloneableEnums carenums = GameObject.Find("CloneAbleEnumsParent").transform.Find("CarLode").GetComponent<CloneableEnums>();
        {
            for (int i = 0; i < obj.Length; i++)
            {
                if (obj[i].gameObject.layer == LayerMask.NameToLayer("CarRoad") &&
                    !obj[i].gameObject.GetComponent<NavMeshModifier>())
                {
                    if (!obj[i].gameObject.GetComponent<MeshCollider>())
                    {
                        obj[i].gameObject.AddComponent<MeshCollider>();
                    }
                    if (!obj[i].gameObject.GetComponent<PathFindingClick>())
                    {
                        obj[i].gameObject.AddComponent<PathFindingClick>();
                    }
                    if (!obj[i].gameObject.GetComponent<MeshCollider>())
                    {
                        obj[i].gameObject.AddComponent<MeshCollider>();
                    }
                    if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
                    {
                        obj[i].gameObject.AddComponent<CreateStaticObjID>();
                    }
                    if (!obj[i].gameObject.GetComponent<CloneableEnums>())
                    {
                        obj[i].gameObject.AddComponent<CloneableEnums>();

                    }
                    if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
                    {
                        obj[i].gameObject.AddComponent<CloneGameObjInfo>();
                        obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                    }
                    obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = carenums.CloneableTypes;
                }
            }
        }
    }
    [MenuItem("SceneTool/SetNavLayerShiwaiHumanRoad")]
    public static void SetNavLayershiwaiHumanRoad()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        CloneableEnums shiwaienums = GameObject.Find("CloneAbleEnumsParent").transform.Find("ShiWaiFloor").GetComponent<CloneableEnums>();
        {
            for (int i = 0; i < obj.Length; i++)
            {
                if (obj[i].gameObject.layer == LayerMask.NameToLayer("SoldierRoad")
                    && !obj[i].gameObject.GetComponent<NavMeshModifier>())
                {
                    if (!obj[i].gameObject.GetComponent<MeshCollider>())
                    {
                        obj[i].gameObject.AddComponent<MeshCollider>();
                    }
                    if (!obj[i].gameObject.GetComponent<PathFindingClick>())
                    {
                        obj[i].gameObject.AddComponent<PathFindingClick>();
                    }
                    if (!obj[i].gameObject.GetComponent<MeshCollider>())
                    {
                        obj[i].gameObject.AddComponent<MeshCollider>();
                    }
                    if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
                    {
                        obj[i].gameObject.AddComponent<CreateStaticObjID>();
                    }
                    if (!obj[i].gameObject.GetComponent<CloneableEnums>())
                    {
                        obj[i].gameObject.AddComponent<CloneableEnums>();

                    }
                    if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
                    {
                        obj[i].gameObject.AddComponent<CloneGameObjInfo>();
                        obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                    }
                    obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = shiwaienums.CloneableTypes;
                }
            }
        }
    }
    [MenuItem("SceneTool/ReadCloneTypes")]
    static void ReadCloneTypes()
    {
        string path = Application.dataPath + "/Floors.txt";
        string str = File.ReadAllText(path, Encoding.UTF8);
        string[] EnumStrList = str.Split(',');
        //List<CloneObjType> EnmuList = new List<CloneObjType>();
        //foreach (var item in EnumStrList)
        //{
        //    if (!string.IsNullOrEmpty(item))
        //    {
        //        CloneObjType type = (CloneObjType)Enum.Parse(typeof(CloneObjType), item);
        //        EnmuList.Add(type);
        //    }
        //}
        //GameObject CarRoad = GameObject.Find("FloorNei");
        //if (!CarRoad.GetComponent<CloneableEnums>())
        //{
        //    CarRoad.AddComponent<CloneableEnums>();
        //}
        //var CloneableEnums = CarRoad.GetComponent<CloneableEnums>();
        //CloneableEnums.CloneableTypes = EnmuList;
    }
    [MenuItem("SceneTool/AddColider")]
    static void AddColider()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered);
        {
            Debug.Log(obj[0].name);
        }
    }
    [MenuItem("SceneTool/SetShiNeiXHS")]
    public static void SetShiNeiXHS()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        CloneableEnums SNXHS = GameObject.Find("CloneAbleEnumsParent").transform.Find("SNXHS").GetComponent<CloneableEnums>();
        {
            for (int i = 0; i < obj.Length; i++)
            {
                FloorMessage floormessage = obj[i].GetComponentInParent<FloorMessage>();
                if (obj[i].gameObject.name.ToUpper().Contains("XHS")/*&& obj[i].gameObject.GetComponent<Animator>()*/)
                {
                    //if (!obj[i].gameObject.GetComponent<MeshCollider>())
                    //{
                    //    obj[i].gameObject.AddComponent<MeshCollider>();
                    //}

                    if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
                    {
                        obj[i].gameObject.AddComponent<CreateStaticObjID>();
                    }
                    if (!obj[i].gameObject.GetComponent<CloneableEnums>())
                    {
                        obj[i].gameObject.AddComponent<CloneableEnums>();
                    }
                    if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
                    {
                        obj[i].gameObject.AddComponent<CloneGameObjInfo>();
                    }
                    if (!obj[i].gameObject.GetComponent<WaterSource>())
                    {
                        obj[i].gameObject.AddComponent<WaterSource>();
                    }
                    if (!obj[i].gameObject.GetComponent<WATER_SOURCE_INFO_SYNC>())
                    {
                        obj[i].gameObject.AddComponent<WATER_SOURCE_INFO_SYNC>();
                    }
                    if (!obj[i].gameObject.GetComponent<XFSS>())
                    {
                        obj[i].gameObject.AddComponent<XFSS>();
                    }
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = floormessage.buildNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = floormessage.floorNum;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = floormessage.interlayerNum;
                    obj[i].gameObject.GetComponent<XFSS>().type = XFSSType.室内消火栓;
                    obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = SNXHS.CloneableTypes;
                    obj[i].gameObject.GetComponent<WaterSource>().water = true;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                }
            }
        }
    }

    /// <summary>
    /// 作战部署消火栓等图标显示Quad添加,需要先在需要的物体上添加XFSS脚本
    /// </summary>
    [MenuItem("SceneTool/AddQuad")]
    public static void AddQuad()
    {
        QuadMat quadMat = GameObject.Find("QuadMat").GetComponent<QuadMat>();
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        for (int i = 0; i < obj.Length; i++)
        {
            if (obj[i].GetComponent<XFSS>())
            {
                if (!obj[i].transform.Find("Quad") && obj[i].name != "Quad")
                {
                    GameObject quad = GameObject.Instantiate(quadMat.Quad);
                    quad.name = "Quad";
                    quad.transform.parent = obj[i].transform;
                    quad.transform.localPosition = Vector3.up * 10;
                    switch (obj[i].GetComponent<XFSS>().type)
                    {
                        case XFSSType.地上消火栓:
                            quad.GetComponent<Renderer>().material = quadMat.mats[0];
                            break;
                        case XFSSType.泡沫栓:
                            quad.GetComponent<Renderer>().material = quadMat.mats[1];
                            break;
                        case XFSSType.水泵接合器:
                            quad.GetComponent<Renderer>().material = quadMat.mats[2];
                            break;
                        case XFSSType.水炮:
                            quad.GetComponent<Renderer>().material = quadMat.mats[3];
                            break;
                        case XFSSType.室内消火栓:
                            quad.GetComponent<Renderer>().material = quadMat.mats[0];
                            break;
                        default:
                            break;
                    }
                    quad.layer = LayerMask.NameToLayer("FightDeploy");
                    obj[i].transform.Find("Quad").localScale = new Vector3(3, 3, 3);
                    quad.gameObject.SetActive(false);
                }
                else
                {
                    obj[i].transform.Find("Quad").gameObject.layer = LayerMask.NameToLayer("FightDeploy");
                    obj[i].transform.Find("Quad").localScale = new Vector3(3, 3, 3);
                    obj[i].transform.Find("Quad").gameObject.SetActive(false);
                }

            }

        }

    }

    [MenuItem("SceneTool/ClearMissSprite")]
    public static void ClearMissSprite()
    {

        {
            Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
            for (int i = 0; i < obj.Length; i++)
            {
                var gameObject = obj[i].gameObject;
                object p = GameObjectUtility.RemoveMonoBehavioursWithMissingScript(gameObject);
            }
        }
    }

    [MenuItem("SceneTool/SetOilNormal")]
    public static void SetOilNormal()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        GameObject NornalPre = GameObject.Find("NormalPre");
        if (!obj[0].GetComponent<Mesh>())
        {
            //obj[0].gameObject.AddComponent<MeshFilter>();
            //obj[0].gameObject.GetComponent<MeshFilter>().mesh = NornalPre.GetComponent<MeshFilter>().mesh;

            // obj[0].gameObject.AddComponent<MeshRenderer>();
            obj[0].gameObject.GetComponent<MeshRenderer>().material = NornalPre.GetComponent<MeshRenderer>().material;

            //obj[0].gameObject.AddComponent<MeshCollider>();
            //obj[0].gameObject.GetComponent<MeshCollider>().sharedMesh = NornalPre.GetComponent<MeshCollider>().sharedMesh;

            obj[0].gameObject.AddComponent<CreateStaticObjID>();

            obj[0].gameObject.AddComponent<OilTankBase>();

            obj[0].gameObject.AddComponent<OilTankMessage>();

            obj[0].gameObject.AddComponent<HideOilLevel>();

            obj[0].gameObject.AddComponent<OIL_TANK_INFO_SYNC>();

            obj[0].gameObject.AddComponent<OilTankDisasterRecord>();

            obj[0].gameObject.AddComponent<CloneableEnums>();
            obj[0].gameObject.GetComponent<CloneableEnums>().CloneableTypes = NornalPre.GetComponent<CloneableEnums>().CloneableTypes;
            obj[0].gameObject.name = "Normal";
        }
    }

    /// <summary>
    /// 替换场景中的水炮,适用于没有拆分但是需要出水的水炮
    /// </summary>
    [MenuItem("SceneTool/ChangeShuiPao")]
    public static void ChangeShuiPao()
    {
        GameObject shuipaopre = Resources.Load<GameObject>("ShuiPao");
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        for (int i = 0; i < obj.Length; i++)
        {
            if (obj[i].GetComponent<Collider>())
            {
                GameObject csp = GameObject.Instantiate(shuipaopre);
                csp.transform.parent = obj[i].parent;
                csp.transform.localPosition = obj[i].localPosition;
                // csp.transform.localRotation = obj[i].localRotation;
                csp.name = "shuipao" + i;
                obj[i].gameObject.SetActive(false);
            }
        }
    }

    /// <summary>
    /// 须先添加MeshCollider使用,选中消火栓父物体设置
    /// </summary>
    [MenuItem("SceneTool/SetShiWaiXHS")]
    public static void SetShiWaiXHS()
    {
        Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
        CloneableEnums SNXHS = GameObject.Find("CloneAbleEnumsParent").transform.Find("SNXHS").GetComponent<CloneableEnums>();
        {
            for (int i = 0; i < obj.Length; i++)
            {
                if (obj[i].gameObject.GetComponent<MeshCollider>() && obj[i].name != "Quad")
                {
                    if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
                    {
                        obj[i].gameObject.AddComponent<CreateStaticObjID>();
                    }
                    if (!obj[i].gameObject.GetComponent<CloneableEnums>())
                    {
                        obj[i].gameObject.AddComponent<CloneableEnums>();
                    }
                    if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
                    {
                        obj[i].gameObject.AddComponent<CloneGameObjInfo>();
                    }
                    if (!obj[i].gameObject.GetComponent<WaterSource>())
                    {
                        obj[i].gameObject.AddComponent<WaterSource>();
                    }
                    if (!obj[i].gameObject.GetComponent<WATER_SOURCE_INFO_SYNC>())
                    {
                        obj[i].gameObject.AddComponent<WATER_SOURCE_INFO_SYNC>();
                    }
                    if (!obj[i].gameObject.GetComponent<XFSS>())
                    {
                        obj[i].gameObject.AddComponent<XFSS>();
                    }

                    obj[i].gameObject.GetComponent<XFSS>().type = XFSSType.地上消火栓;
                    obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = SNXHS.CloneableTypes;
                    obj[i].gameObject.GetComponent<WaterSource>().water = true;
                    obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
                    if (obj[i].GetComponent<XFSS>())
                    {
                        if (obj[i].GetComponent<XFSS>().type == XFSSType.泡沫栓)
                        {
                            obj[i].gameObject.GetComponent<WaterSource>().foam = true;
                        }
                    }
                }
            }

        }
    }

}