海淀天下城电子沙盘单机版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

922 lines
41 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEngine.AI;
public class SceneTool
{
// Use this for initialization
//[MenuItem("SceneTool/ShiNeiFloorRename")]
////设置每一层的室内结构父对象的名称,方法:选中每层室内父对象后设置
//public static void ShiNeiFloorRename()
//{
// bool containBuildNum = true;//生成名字是否包含楼号
// Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered);
// for (int i = 0; i < obj.Length; i++)
// {
// if (obj[i].GetComponent<FloorMessage>())
// {
// var buildNum = obj[i].GetComponent<FloorMessage>().buildNum;
// var floorNum = obj[i].GetComponent<FloorMessage>().floorNum;
// var interlayerNum = obj[i].GetComponent<FloorMessage>().interlayerNum;
// string name = "nei" + floorNum;
// if (containBuildNum)
// {
// name = buildNum + name;
// }
// if (interlayerNum != 0)
// {
// name = name + "*" + interlayerNum;
// }
// obj[i].name = name;
// obj[i].tag = "nei";
// }
// }
//}
//[MenuItem("SceneTool/ShiWaiFloorRename")]
////设置每一层的室外结构父对象的名称,方法:选中每层室外父对象后设置
//public static void ShiWaiFloorRename()
//{
// bool containBuildNum = true;//生成名字是否包含楼号
// Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered);
// for (int i = 0; i < obj.Length; i++)
// {
// if (obj[i].GetComponent<FloorMessage>())
// {
// var buildNum = obj[i].GetComponent<FloorMessage>().buildNum;
// var floorNum = obj[i].GetComponent<FloorMessage>().floorNum;
// var interlayerNum = obj[i].GetComponent<FloorMessage>().interlayerNum;
// string name = "wai" + floorNum;
// if (containBuildNum)
// {
// name = buildNum + name;
// }
// if (interlayerNum != 0)
// {
// name = name + "*" + interlayerNum;
// }
// obj[i].name = name;
// }
// }
//}
//[MenuItem("SceneTool/SetShiNeiFloor")]
////设置室内寻路,地面、楼梯、墙设置Layer加MeshCollider,墙加NavMeshModifier,地面、楼梯加静态Id脚本
////方法:选中每层室内父对象后设置
//public static void SetShiNeiFloor()
//{
// int[] NUM = { 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
// Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered);
// for (int i = 0; i < obj.Length; i++)
// {
// if (obj[i].GetComponent<FloorMessage>())
// {
// var buildNum = obj[i].GetComponent<FloorMessage>().buildNum;
// var floorNum = obj[i].GetComponent<FloorMessage>().floorNum;
// var interlayerNum = obj[i].GetComponent<FloorMessage>().interlayerNum;
// string layerName = "";
// if (floorNum < 0)
// {
// layerName = buildNum + "-10--1";
// }
// else
// {
// for (int k = 0; k < NUM.Length; k++)
// {
// if (floorNum > NUM[k] && floorNum <= NUM[k + 1])
// {
// var begin = NUM[k] + 1;
// var end = NUM[k + 1];
// layerName = buildNum + begin + "-" + end;
// break;
// }
// }
// }
// var childObj = obj[i].GetComponentsInChildren<MeshRenderer>();
// for (int j = 0; j < childObj.Length; j++)
// {
// if (childObj[j].gameObject.name.ToUpper().Contains("LT") || childObj[j].gameObject.name.ToUpper().Contains("LOUTI"))
// {
// childObj[j].gameObject.layer = LayerMask.NameToLayer(layerName);
// if (!childObj[j].gameObject.GetComponent<MeshCollider>())
// {
// childObj[j].gameObject.AddComponent<MeshCollider>();
// }
// if (!childObj[j].gameObject.GetComponent<CloneGameObjInfo>())
// {
// childObj[j].gameObject.AddComponent<CloneGameObjInfo>();
// }
// var objInfo = childObj[j].gameObject.GetComponent<CloneGameObjInfo>();
// objInfo.gameObjType = CloneObjType.staticGameObject;
// objInfo.buildNum = buildNum;
// objInfo.floorNum = floorNum;
// objInfo.interlayerNum = interlayerNum;
// if (!childObj[j].gameObject.GetComponent<CreateStaticObjID>())
// {
// childObj[j].gameObject.AddComponent<CreateStaticObjID>();
// }
// if (!childObj[j].gameObject.GetComponent<PathFindingClick>())
// {
// childObj[j].gameObject.AddComponent<PathFindingClick>();
// }
// }
// if (childObj[j].gameObject.name.ToUpper().Contains("FLOOR"))
// {
// childObj[j].gameObject.layer = LayerMask.NameToLayer(layerName);
// if (!childObj[j].gameObject.GetComponent<MeshCollider>())
// {
// childObj[j].gameObject.AddComponent<MeshCollider>();
// }
// if (!childObj[j].gameObject.GetComponent<CloneGameObjInfo>())
// {
// childObj[j].gameObject.AddComponent<CloneGameObjInfo>();
// }
// var objInfo = childObj[j].gameObject.GetComponent<CloneGameObjInfo>();
// objInfo.gameObjType = CloneObjType.staticGameObject;
// objInfo.buildNum = buildNum;
// objInfo.floorNum = floorNum;
// objInfo.interlayerNum = interlayerNum;
// if (!childObj[j].gameObject.GetComponent<CreateStaticObjID>())
// {
// childObj[j].gameObject.AddComponent<CreateStaticObjID>();
// }
// if (!childObj[j].gameObject.GetComponent<PathFindingClick>())
// {
// childObj[j].gameObject.AddComponent<PathFindingClick>();
// }
// }
// if (childObj[j].gameObject.name.ToUpper().Contains("WALL"))
// {
// childObj[j].gameObject.layer = LayerMask.NameToLayer(layerName);
// if (!childObj[j].gameObject.GetComponent<MeshCollider>())
// {
// childObj[j].gameObject.AddComponent<MeshCollider>();
// }
// if (!childObj[j].gameObject.GetComponent<NavMeshModifier>())
// {
// childObj[j].gameObject.AddComponent<NavMeshModifier>();
// }
// NavMeshModifier modifier = childObj[j].gameObject.GetComponent<NavMeshModifier>();
// modifier.overrideArea = true;
// modifier.area = NavMesh.GetAreaFromName("Not Walkable");
// }
// }
// }
// }
//}
//[MenuItem("SceneTool/SetShiWaiFloor")]
////室外地面添加静态Id脚本,加MeshCollider,方法:选中整个场景后设置
//public static void SetShiWaiFloor()
//{
// Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
// for (int i = 0; i < obj.Length; i++)
// {
// if (obj[i].gameObject.layer == LayerMask.NameToLayer("Road"))
// {
// if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
// {
// obj[i].gameObject.AddComponent<CloneGameObjInfo>();
// }
// var objInfo = obj[i].gameObject.GetComponent<CloneGameObjInfo>();
// objInfo.gameObjType = CloneObjType.staticGameObject;
// if (!obj[i].GetComponent<CreateStaticObjID>())
// {
// obj[i].gameObject.AddComponent<CreateStaticObjID>();
// }
// if (!obj[i].gameObject.GetComponent<MeshCollider>())
// {
// obj[i].gameObject.AddComponent<MeshCollider>();
// }
// if (!obj[i].gameObject.GetComponent<PathFindingClick>())
// {
// obj[i].gameObject.AddComponent<PathFindingClick>();
// }
// }
// }
//}
//[MenuItem("SceneTool/SetXHS")]
////给消火栓添加静态Id脚本,加MeshCollider,加水源的标记脚本,方法:选中消火栓后设置
//public static void SetXHS()
//{
// Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered);
// for (int i = 0; i < obj.Length; i++)
// {
// if (!obj[i].gameObject.GetComponent<MeshCollider>())
// {
// obj[i].gameObject.AddComponent<MeshCollider>();
// }
// if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
// {
// obj[i].gameObject.AddComponent<CloneGameObjInfo>();
// }
// var objInfo = obj[i].gameObject.GetComponent<CloneGameObjInfo>();
// objInfo.gameObjType = CloneObjType.staticGameObject;
// Transform pTrans = TransformHelper.FindParentByTag(obj[i], "nei");
// if (pTrans != null)
// {
// FloorMessage floorMsg = pTrans.GetComponent<FloorMessage>();
// objInfo.buildNum = floorMsg.buildNum;
// objInfo.floorNum = floorMsg.floorNum;
// objInfo.interlayerNum = floorMsg.interlayerNum;
// }
// if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
// {
// obj[i].gameObject.AddComponent<CreateStaticObjID>();
// }
// if (!obj[i].gameObject.GetComponent<WaterSource>())
// {
// obj[i].gameObject.AddComponent<WaterSource>();
// }
// var waterSource = obj[i].gameObject.GetComponent<WaterSource>();
// waterSource.water = true;
// waterSource.foam = false;
// }
//}
//[MenuItem("SceneTool/SetJHQ")]
////给水泵接合器添加静态Id脚本,加MeshCollider,方法:选中接合器后设置
//public static void SetJHQ()
//{
// Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered);
// for (int i = 0; i < obj.Length; i++)
// {
// if (!obj[i].gameObject.GetComponent<MeshCollider>())
// {
// obj[i].gameObject.AddComponent<MeshCollider>();
// }
// if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
// {
// obj[i].gameObject.AddComponent<CloneGameObjInfo>();
// }
// var objInfo = obj[i].gameObject.GetComponent<CloneGameObjInfo>();
// objInfo.gameObjType = CloneObjType.staticGameObject;
// Transform pTrans = TransformHelper.FindParentByTag(obj[i], "nei");
// if (pTrans != null)
// {
// FloorMessage floorMsg = pTrans.GetComponent<FloorMessage>();
// objInfo.buildNum = floorMsg.buildNum;
// objInfo.floorNum = floorMsg.floorNum;
// objInfo.interlayerNum = floorMsg.interlayerNum;
// }
// if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
// {
// obj[i].gameObject.AddComponent<CreateStaticObjID>();
// }
// }
//}
//[MenuItem("SceneTool/CreateFloorTarget")]
////在楼层中创建切层的相机跟随目标位置
//public static void CreateFloorTarget()
//{
// Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered);
// for (int i = 0; i < obj.Length; i++)
// {
// if (obj[i].GetComponent<FloorMessage>())
// {
// var buildNum = obj[i].GetComponent<FloorMessage>().buildNum;
// var floorNum = obj[i].GetComponent<FloorMessage>().floorNum;
// var interlayerNum = obj[i].GetComponent<FloorMessage>().interlayerNum;
// var target = obj[i].Find("TargetPosition");
// if (!target)
// {
// var targetObj = GameObject.CreatePrimitive(PrimitiveType.Cube);
// targetObj.name = "TargetPosition";
// targetObj.transform.parent = obj[i];
// targetObj.GetComponent<MeshRenderer>().enabled = false;
// targetObj.GetComponent<BoxCollider>().enabled = false;
// //对象名称
// var childObj = obj[i].GetComponentsInChildren<MeshRenderer>();
// for (int j = 0; j < childObj.Length; j++)
// {
// if (childObj[j].gameObject.name.ToUpper().Contains("FLOOR"))
// {
// targetObj.transform.position = childObj[j].gameObject.transform.position;
// }
// }
// }
// }
// }
//}
[MenuItem("SceneTool/CleanupMissingScripts")]
//清除场景中挂的丢失的脚本,完成后需重新打开项目
public static void CleanupMissingScripts()
{
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
for (int i = 0; i < obj.Length; i++)
{
var gameObject = obj[i].gameObject;
// We must use the GetComponents array to actually detect missing components
var components = gameObject.GetComponents<Component>();
// Create a serialized object so that we can edit the component list
var serializedObject = new SerializedObject(gameObject);
// Find the component list property
var prop = serializedObject.FindProperty("m_Component");
// Track how many components we've removed
int r = 0;
// Iterate over all components
for (int j = 0; j < components.Length; j++)
{
// Check if the ref is null
if (components[j] == null)
{
// If so, remove from the serialized component array
prop.DeleteArrayElementAtIndex(j - r);
// Increment removed count
r++;
}
}
// Apply our changes to the game object
serializedObject.ApplyModifiedProperties();
}
}
[MenuItem("SceneTool/ChangeBuildName")]
static void ChangeBuildName()
{
//Transform zhuti = GameObject.Find("Scene").transform.Find("ZhuTi/A0ZhuTi");
//Transform shinei= GameObject.Find("Scene").transform.Find("ShiNei/A0ShiNei");
Transform zhuti = GameObject.Find("Scene").transform.Find("ZhuTi");
Transform shinei= GameObject.Find("Scene").transform.Find("ShiNei");
for (int i = 0; i < zhuti.childCount; i++)
{
change(zhuti.GetChild(i), 1);
}
for (int i = 0; i < shinei.childCount; i++)
{
change(shinei.GetChild(i), 1);
}
}
static void change(Transform target, int index)
{
string build = target.name.Substring(0, index);
string neiwai = target.name.Contains("ShiNei") ? "nei" : "wai";
if (target.childCount < 1)
{
return;
}
for (int i = 0; i < target.childCount; i++)
{
//if (!target.GetChild(i).name.Contains("nei")||
// !target.GetChild(i).name.Contains("wai"))
//{
// return;
//}
target.GetChild(i).name = build + target.GetChild(i).name;
if (!target.GetChild(i).GetComponent<FloorMessage>())
{
target.GetChild(i).gameObject.AddComponent<FloorMessage>();
}
int floor;
if (!target.GetChild(i).name.Contains("M"))
{
int indexI = target.GetChild(i).name.IndexOf("i");
floor = int.Parse(target.GetChild(i).name.Substring(indexI + 1));
}
else
{
if (target.GetChild(i).name.StartsWith("M") && !target.GetChild(i).name.EndsWith("M"))
{
int indexJ = target.GetChild(i).name.IndexOf("i");
floor = int.Parse(target.GetChild(i).name.Substring(indexJ + 1));
}
else
{
int indexM = target.GetChild(i).name.IndexOf("M");
int indexI = target.GetChild(i).name.IndexOf("i");
Debug.Log(target.GetChild(i).name.Substring(indexI+1, indexM-indexI-1));
floor = int.Parse(target.GetChild(i).name.Substring(indexI + 1, indexM - indexI - 1));
}
}
//floor = int.Parse(target.GetChild(i).name.Substring(target.GetChild(i).name.IndexOf(neiwai)));
FloorMessage mess = target.GetChild(i).GetComponent<FloorMessage>();
mess.buildNum = build;
mess.floorNum = floor;
mess.interlayerNum = target.GetChild(i).name.Contains("M") ? 1 : 0;
}
}
[MenuItem("SceneTool/SetGameObjType")]
static void SetGameObjType()
{
Transform scenc = GameObject.Find("SceneAll").transform;
CloneGameObjInfo[] infos = scenc.GetComponentsInChildren<CloneGameObjInfo>(true);
for (int i = 0; i < infos.Length; i++)
{
if (!infos[i].GetComponent<CreateStaticObjID>())
{
infos[i].gameObject.AddComponent<CreateStaticObjID>();
}
if(!infos[i].gameObject.GetComponent<WaterSupplier>())
{
infos[i].gameObjType = CloneObjType.StaticGameObject;
}
}
}
[MenuItem("SceneTool/SetXHS")]
static void SetSetXHS()
{
Transform Scene = GameObject.Find("SceneAll").transform;//.Find("ShiNei/AShiNei");
WaterSupplier[] ws = Scene.GetComponentsInChildren<WaterSupplier>(true);
for (int i = 0; i < ws.Length; i++)
{
if (!ws[i].GetComponent<MeshCollider>())
{
ws[i].gameObject.AddComponent<MeshCollider>();
}
if (!ws[i].GetComponent<CloneableEnums>())
{
ws[i].WaterReceiverType = WaterType.water;
ws[i].gameObject.AddComponent<CloneableEnums>();
ws[i].GetComponent<CloneableEnums>().CloneableTypes.Add(CloneObjType.TwinkleLine);
ws[i].GetComponent<CloneableEnums>().CloneableTypes.Add(CloneObjType.WaterLine);
ws[i].GetComponent<BaseGameObjInfo>().gameObjType = CloneObjType.StaticGameObject;
}
else
{
}
ws[i].GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.XHS;
}
}
[MenuItem("SceneTool/AddFireNormalShiNei")]
static void AddFireNormal()
{
Transform Ashinei = GameObject.Find("Scene").transform.Find("ShiNei");
CloneableEnums[] enums = Ashinei.GetComponentsInChildren<CloneableEnums>(true);
for (int i = 0; i < enums.Length; i++)
{
if (enums[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType!=CloneObjType.XHS)
{
if (!enums[i].CloneableTypes.Contains(CloneObjType.FireNormal))
{
enums[i].CloneableTypes.Add(CloneObjType.FireNormal);
}
}
}
}
[MenuItem("SceneTool/SetFloorMessage")]
static void SetFloorMessage()
{
Transform shinei = GameObject.Find("Scene").transform.Find("ShiNei");
CloneGameObjInfo[] infos = shinei.GetComponentsInChildren<CloneGameObjInfo>();
for (int i = 0; i < infos.Length; i++)
{
if (infos[i].name.ToLower().Contains("floor"))
{
infos[i].buildNum = infos[i].GetComponentInParent<FloorMessage>().buildNum;
infos[i].floorNum = infos[i].GetComponentInParent<FloorMessage>().floorNum;
infos[i].interlayerNum= infos[i].GetComponentInParent<FloorMessage>().interlayerNum;
}
}
}
[MenuItem("SceneTool/AddFloorSprite")]
static void AddFloorSprite()
{
Transform shinei = GameObject.Find("Scene").transform.Find("ShiNei");
getFloor(shinei);
}
static Transform getFloor(Transform parent)
{
CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("ShiNei").GetComponent<CloneableEnums>();
Transform target = null;
for (int i = 0; i < parent.childCount; i++)
{
if (parent.GetChild(i).childCount > 0)
{
getFloor(parent.GetChild(i));
}
if (parent.GetChild(i).name.ToLower().Contains("floor"))
{
//Debug.Log(parent.GetChild(i).name);
if (!parent.GetChild(i).gameObject.GetComponent<CloneableEnums>())
{
parent.GetChild(i).gameObject.AddComponent<CloneableEnums>();
}
if (!parent.GetChild(i).gameObject.GetComponent<MeshCollider>())
{
parent.GetChild(i).gameObject.AddComponent<MeshCollider>();
}
if (!parent.GetChild(i).gameObject.GetComponent<PathFindingClick>())
{
parent.GetChild(i).gameObject.AddComponent<PathFindingClick>();
}
if (!parent.GetChild(i).gameObject.GetComponent<CreateStaticObjID>())
{
parent.GetChild(i).gameObject.AddComponent<CreateStaticObjID>();
}
if (!parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>())
{
parent.GetChild(i).gameObject.AddComponent<CloneGameObjInfo>();
}
parent.GetChild(i).gameObject.GetComponent<CloneableEnums>().CloneableTypes = ce.CloneableTypes;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.StaticGameObject;
parent.GetChild(i).gameObject.layer = 30;
FloorMessage mess = parent.GetChild(i).gameObject.GetComponentInParent<FloorMessage>();
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().buildNum = mess.buildNum;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().floorNum = mess.floorNum;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = mess.interlayerNum;
}
else { }
}
return target;
}
[MenuItem("SceneTool/AddLTSprite")]
static void AddLTSprite()
{
Transform shinei = GameObject.Find("Scene").transform.Find("ShiNei");
getlt(shinei);
}
static Transform getlt(Transform parent)
{
CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("ShiNei").GetComponent<CloneableEnums>();
Transform target = null;
for (int i = 0; i < parent.childCount; i++)
{
if (parent.GetChild(i).childCount > 0)
{
getlt(parent.GetChild(i));
}
if (parent.GetChild(i).name.ToLower().Contains("lt") && parent.GetChild(i).GetComponent<MeshRenderer>())
{
if (!parent.GetChild(i).gameObject.GetComponent<CloneableEnums>())
{
parent.GetChild(i).gameObject.AddComponent<CloneableEnums>();
}
if (!parent.GetChild(i).gameObject.GetComponent<MeshCollider>())
{
parent.GetChild(i).gameObject.AddComponent<MeshCollider>();
}
if (!parent.GetChild(i).gameObject.GetComponent<PathFindingClick>())
{
parent.GetChild(i).gameObject.AddComponent<PathFindingClick>();
}
if (!parent.GetChild(i).gameObject.GetComponent<CreateStaticObjID>())
{
parent.GetChild(i).gameObject.AddComponent<CreateStaticObjID>();
}
if (!parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>())
{
parent.GetChild(i).gameObject.AddComponent<CloneGameObjInfo>();
}
parent.GetChild(i).gameObject.GetComponent<CloneableEnums>().CloneableTypes = ce.CloneableTypes;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.StaticGameObject;
parent.GetChild(i).gameObject.layer = 30;
FloorMessage mess = parent.GetChild(i).gameObject.GetComponentInParent<FloorMessage>();
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().buildNum = mess.buildNum;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().floorNum = mess.floorNum;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = mess.interlayerNum;
}
else { }
}
return target;
}
[MenuItem("SceneTool/AddFTSprite")]
static void AddFTSprite()
{
Transform shinei = GameObject.Find("Scene").transform.Find("ShiNei");
getft(shinei);
}
static Transform getft(Transform parent)
{
CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("ShiNei").GetComponent<CloneableEnums>();
Transform target = null;
for (int i = 0; i < parent.childCount; i++)
{
if (parent.GetChild(i).childCount > 0)
{
getft(parent.GetChild(i));
}
if ((parent.GetChild(i).name.ToLower().Contains("futi")|| parent.GetChild(i).name.ToLower().Contains("ft"))
&& parent.GetChild(i).GetComponent<MeshRenderer>())
{
// Debug.Log(parent.GetChild(i).name);
if (!parent.GetChild(i).gameObject.GetComponent<CloneableEnums>())
{
parent.GetChild(i).gameObject.AddComponent<CloneableEnums>();
}
if (!parent.GetChild(i).gameObject.GetComponent<MeshCollider>())
{
parent.GetChild(i).gameObject.AddComponent<MeshCollider>();
}
if (!parent.GetChild(i).gameObject.GetComponent<PathFindingClick>())
{
parent.GetChild(i).gameObject.AddComponent<PathFindingClick>();
}
if (!parent.GetChild(i).gameObject.GetComponent<CreateStaticObjID>())
{
parent.GetChild(i).gameObject.AddComponent<CreateStaticObjID>();
}
if (!parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>())
{
parent.GetChild(i).gameObject.AddComponent<CloneGameObjInfo>();
}
parent.GetChild(i).gameObject.GetComponent<CloneableEnums>().CloneableTypes = ce.CloneableTypes;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.StaticGameObject;
parent.GetChild(i).gameObject.layer = 30;
FloorMessage mess = parent.GetChild(i).gameObject.GetComponentInParent<FloorMessage>();
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().buildNum = mess.buildNum;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().floorNum = mess.floorNum;
parent.GetChild(i).gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = mess.interlayerNum;
}
else { }
}
return target;
}
[MenuItem("SceneTool/SetWall")]
static void SetWallSprite()
{
Transform shinei = GameObject.Find("Scene").transform.Find("ShiNei");
setwall(shinei);
}
static Transform setwall(Transform parent)
{
CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("ShiNei").GetComponent<CloneableEnums>();
Transform target = null;
for (int i = 0; i < parent.childCount; i++)
{
if (parent.GetChild(i).childCount > 0)
{
setwall(parent.GetChild(i));
}
if (parent.GetChild(i).name.ToLower().Contains("wall") && parent.GetChild(i).GetComponent<MeshRenderer>())
{
parent.GetChild(i).gameObject.layer = 29;
}
}
return target;
}
[MenuItem("SceneTool/SetShiNeiXHS")]
static void SetShiNeiXHS()
{
Transform shinei = GameObject.Find("Scene").transform.Find("ShiNei");
setxhs(shinei);
}
static Transform setxhs(Transform parent)
{
CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("xhs").GetComponent<CloneableEnums>();
Transform target = null;
for (int i = 0; i < parent.childCount; i++)
{
if (parent.GetChild(i).childCount > 0)
{
setxhs(parent.GetChild(i));
}
if (parent.GetChild(i).name.ToLower().Contains("xhs") && parent.GetChild(i).GetComponent<MeshRenderer>())
{
if (!parent.GetChild(i).gameObject.GetComponent<WaterSupplier>())
{
parent.GetChild(i).gameObject.AddComponent<WaterSupplier>();
}
parent.GetChild(i).GetComponent<WaterSupplier>().WaterReceiverType = WaterType.water;
if (!parent.GetChild(i).gameObject.GetComponent<CloneableEnums>())
{
parent.GetChild(i).gameObject.AddComponent<CloneableEnums>();
}
parent.GetChild(i).GetComponent<CloneableEnums>().CloneableTypes.Clear();
parent.GetChild(i).GetComponent<CloneableEnums>().CloneableTypes.Add(CloneObjType.TwinkleLine);
parent.GetChild(i).GetComponent<CloneableEnums>().CloneableTypes.Add(CloneObjType.WaterLine);
parent.GetChild(i).GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.XHS;
}
}
return target;
}
[MenuItem("SceneTool/SetOilRodeCarCloneEnum")]
public static void SetOilRodeCarCloneEnum()
{
CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("OilCarRode").GetComponent<CloneableEnums>();
CloneableEnums[] allenums = GameObject.Find("SceneAll").GetComponentsInChildren<CloneableEnums>(true);
for (int i = 0; i < allenums.Length; i++)
{
if (!allenums[i].GetComponent<NavMeshModifier>())
{
if (!allenums[i].GetComponent<OilMask>())
{
if (!allenums[i].GetComponent<WaterSupplier>())
{
allenums[i].GetComponent<CloneableEnums>().CloneableTypes = ce.CloneableTypes;
}
}
}
}
}
[MenuItem("SceneTool/SetOilRodeManCloneEnum")]
public static void SetOilRodeManCloneEnum()
{
CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("OilManRode").GetComponent<CloneableEnums>();
CloneableEnums[] allenums = GameObject.Find("SceneAll").GetComponentsInChildren<CloneableEnums>(true);
for (int i = 0; i < allenums.Length; i++)
{
if (allenums[i].GetComponent<NavMeshModifier>())
{
if (!allenums[i].GetComponent<OilMask>())
{
if (!allenums[i].GetComponent<WaterSupplier>())
{
allenums[i].GetComponent<CloneableEnums>().CloneableTypes = ce.CloneableTypes;
}
}
}
}
}
[MenuItem("SceneTool/SetOilWallCloneEnum")]
public static void SetOilWallCloneEnum()
{
CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("OilWall").GetComponent<CloneableEnums>();
CloneableEnums[] allenums = GameObject.Find("SceneAll").GetComponentsInChildren<CloneableEnums>(true);
for (int i = 0; i < allenums.Length; i++)
{
if (allenums[i].GetComponent<OilMask>())
{
if (!allenums[i].GetComponent<PathFindingClick>())
{
allenums[i].GetComponent<CloneableEnums>().CloneableTypes = ce.CloneableTypes;
}
}
}
}
//[MenuItem("SceneTool/RemoveNone")]
//public static void ReMoveNone()
//{
// CloneableEnums ce = GameObject.Find("CloneEnums").transform.Find("OilManRode").GetComponent<CloneableEnums>();
// for (int i = 0; i < ce.CloneableTypes.Count; i++)
// {
// if (ce.CloneableTypes[i]==CloneObjType.None)
// {
// ce.CloneableTypes.Remove(ce.CloneableTypes[i]);
// }
// }
//}
[MenuItem("CloneTypeEditor/AddNewTrucksToolsCloneable")]
static void AddNewTrucksToolsCloneable()
{
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
for (int i = 0; i < obj.Length; i++)
{
var cloneableEnums = obj[i].GetComponent<CloneableEnums>();
if (cloneableEnums != null)
{
var cloneableTypes = cloneableEnums.CloneableTypes;
if (cloneableTypes != null && cloneableTypes.Contains(CloneObjType.WaterTanker))
{
AddType(cloneableTypes, CloneObjType.RemoteWaterSupplyTruck);
AddType(cloneableTypes, CloneObjType.DecontaminationTruck);
AddType(cloneableTypes, CloneObjType.LiquidSupplyTruck);
AddType(cloneableTypes, CloneObjType.FoodSecurityTruck);
AddType(cloneableTypes, CloneObjType.EquipmentTransportTruck);
AddType(cloneableTypes, CloneObjType.EquipmentRepairTruck);
AddType(cloneableTypes, CloneObjType.MedicalSupportTruck);
AddType(cloneableTypes, CloneObjType.DryPowderFireTruck);
AddType(cloneableTypes, CloneObjType.TrafficPoliceCar);
AddType(cloneableTypes, CloneObjType.EnvironmentalCar);
AddType(cloneableTypes, CloneObjType.WeatherBureauCar);
AddType(cloneableTypes, CloneObjType.PowerSupplyCar);
}
}
}
}
private static void AddType(List<CloneObjType> cloneableTypes, CloneObjType type)
{
if (!cloneableTypes.Contains(type))
{
cloneableTypes.Add(type);
}
}
[MenuItem("CloneTypeEditor/SetCloneNei")]
//给罐区地面设置克隆类型,方法:选中整个场景后设置
public static void SetCloneNei()
{
List<CloneObjType> CloneableTypes = new List<CloneObjType>();
for (int i = (int)CloneObjType.WarningLine; i <= (int)CloneObjType.FireMan; i++)
{
if ((CloneObjType)i != CloneObjType.Splash &&
(CloneObjType)i != CloneObjType.Boilover)//&&
//(CloneObjType)i != CloneObjType.FireInside&&
//(CloneObjType)i != CloneObjType.SmokeInside)
CloneableTypes.Add((CloneObjType)i);
}
List<CloneObjType> CloneableTypesXHS = new List<CloneObjType>();
CloneableTypesXHS.Add(CloneObjType.WaterLine);
CloneableTypesXHS.Add(CloneObjType.TwinkleLine);
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
for (int i = 0; i < obj.Length; i++)
{
if (obj[i].gameObject.name.ToUpper().Contains("-FLOOR") || obj[i].gameObject.name.ToUpper().Contains("_FLOOR"))
{
Debug.Log(obj[i].gameObject.name);
if (!obj[i].gameObject.GetComponent<CloneableEnums>())
{
obj[i].gameObject.AddComponent<CloneableEnums>();
}
var cloneableEnums = obj[i].GetComponent<CloneableEnums>();
cloneableEnums.CloneableTypes = CloneableTypes;
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>();
}
obj[i].gameObject.layer = LayerMask.NameToLayer("ShiNei");
CloneGameObjInfo info = obj[i].gameObject.GetComponent<CloneGameObjInfo>();
info.buildNum = obj[i].parent.GetComponent<FloorMessage>().buildNum;
info.floorNum = obj[i].parent.GetComponent<FloorMessage>().floorNum;
info.interlayerNum = obj[i].parent.GetComponent<FloorMessage>().interlayerNum;
}
//if (obj[i].gameObject.name.ToUpper().Contains("LT") && obj[i].childCount == 0
// && obj[i].gameObject.name.ToUpper().IndexOf("LT") == 0)
//{
// Debug.Log(obj[i].gameObject.name);
// 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>();
// }
// CloneGameObjInfo info = obj[i].gameObject.GetComponent<CloneGameObjInfo>();
// info.buildNum = obj[i].parent.parent.GetComponent<FloorMessage>().buildNum;
// info.floorNum = obj[i].parent.parent.GetComponent<FloorMessage>().floorNum;
// info.interlayerNum = obj[i].parent.parent.GetComponent<FloorMessage>().interlayerNum;
// obj[i].gameObject.layer = LayerMask.NameToLayer("ShiNei");
//}
//if (obj[i].gameObject.name.ToUpper().Contains("XHS") && obj[i].childCount == 0)
//{
// Debug.Log(obj[i].gameObject.name);
// 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<WaterSupplier>())
// {
// obj[i].gameObject.AddComponent<WaterSupplier>();
// }
// if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
// {
// obj[i].gameObject.AddComponent<CloneGameObjInfo>();
// }
// CloneGameObjInfo info = obj[i].gameObject.GetComponent<CloneGameObjInfo>();
// if (obj[i].parent.parent.GetComponent<FloorMessage>())
// {
// info.buildNum = obj[i].parent.parent.GetComponent<FloorMessage>().buildNum;
// info.floorNum = obj[i].parent.parent.GetComponent<FloorMessage>().floorNum;
// info.interlayerNum = obj[i].parent.parent.GetComponent<FloorMessage>().interlayerNum;
// }
// info.gameObjType = CloneObjType.XHS;
// obj[i].gameObject.GetComponent<WaterSupplier>().WaterReceiverType = WaterType.water;
// var cloneableEnums = obj[i].GetComponent<CloneableEnums>();
// cloneableEnums.CloneableTypes = CloneableTypesXHS;
//}
}
}
}