588 lines
42 KiB
C#
588 lines
42 KiB
C#
//using AutoMapper;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using TMPro;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class TOOL : MonoBehaviour
|
|
{
|
|
|
|
public List<GameObject> gameObjects;
|
|
public List<Transform> Uwei;
|
|
public GameObject prefab;
|
|
|
|
public string port;
|
|
public string deviceId;
|
|
public string conDevice;
|
|
public string conPort;
|
|
|
|
public Transform UI_follow;
|
|
|
|
public RedactDevice redactDevice;
|
|
|
|
public TMP_FontAsset f_old;
|
|
public TMP_FontAsset f_new;
|
|
public Font font_old;
|
|
public Font font_new;
|
|
public Image Image;
|
|
//public Collider collider;
|
|
void Start()
|
|
{
|
|
//collider=GetComponent<Collider>();
|
|
//var t = CombineJSON.Base64StringToTexture("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");
|
|
//Image.sprite = Sprite.Create(t, new Rect(0, 0, t.width, t.height), Vector2.zero);
|
|
}
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
//Debug.Log(Input.mousePosition);
|
|
//Debug.Log(Map(0,100,0,0,1));
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <param name="inputMin">输入范围最小</param>
|
|
/// <param name="inputMax">输入范围最大</param>
|
|
/// <param name="outputMin">输出范围最小</param>
|
|
/// <param name="outputMax">输出范围最大</param>
|
|
/// <returns></returns>
|
|
float Map(float value, float inputMin, float inputMax, float outputMin, float outputMax)
|
|
{
|
|
return (value - inputMin) / (inputMax - inputMin) * (outputMax - outputMin) + outputMin;
|
|
}
|
|
|
|
[ContextMenu("设置线缆层级高度")]
|
|
public void SetxianLanHight()
|
|
{
|
|
for (int i = 0; i < gameObjects.Count; i++)
|
|
{
|
|
gameObjects[i].transform.localPosition += (new Vector3(0, 0.135f, 0) * i);
|
|
}
|
|
}
|
|
[ContextMenu("按顺序设置端口位置")]
|
|
public void setPortPos() {
|
|
for (int i = 0; i < gameObjects.Count; i++)
|
|
{
|
|
gameObjects[i].GetComponent<PortQuery>().portList.portPosition = (i + 1).ToString();
|
|
}
|
|
}
|
|
|
|
[ContextMenu("重命名")]
|
|
public void reName()
|
|
{
|
|
if (gameObjects.Count == 0 && gameObjects == null) return;
|
|
for (int i = 0; i < gameObjects.Count; i++)
|
|
{
|
|
var deviceQuery = gameObjects[i].GetComponent<DeviceQuery>();
|
|
|
|
int a = int.Parse(gameObjects[i].name.Split('R')[1]);
|
|
string b = "";
|
|
if (a <= 8) { b = "I-"; }
|
|
else if (a <= 16) { b = "H-"; }
|
|
else if (a <= 24) { b = "G-"; }
|
|
else if (a <= 32) { b = "F-"; }
|
|
else if (a <= 40) { b = "E-"; }
|
|
else if (a <= 48) { b = "D-"; }
|
|
else if (a <= 56) { b = "C-"; }
|
|
else if (a <= 64) { b = "B-"; }
|
|
else if (a <= 72) { b = "A-"; }
|
|
|
|
var nub = (a % 8).ToString().PadLeft(2, '0');
|
|
if (nub == "00") nub = "08";
|
|
var devicePosition = b + nub;
|
|
if (deviceQuery == null)
|
|
{
|
|
var D = gameObjects[i].AddComponent<DeviceQuery>();
|
|
D.deviceList.deviceCode = "";
|
|
D.deviceList.devicePosition = devicePosition;
|
|
D.deviceList.type = "1";
|
|
}
|
|
else
|
|
{
|
|
deviceQuery.deviceList.deviceCode = "";
|
|
deviceQuery.deviceList.devicePosition = devicePosition;
|
|
deviceQuery.deviceList.type = "1";
|
|
}
|
|
continue;
|
|
var U = gameObjects[i].transform.Find("U位");
|
|
if (U == null)
|
|
{
|
|
//var go = new GameObject("U位");
|
|
//go.transform.SetParent(gameObjects[i].transform);
|
|
//for (int j = 0; j < 42; j++)
|
|
//{
|
|
// var g = new GameObject((j + 1).ToString());
|
|
// g.transform.SetParent(go.transform);
|
|
//}
|
|
var go = GameObject.Instantiate(Resources.Load<GameObject>("机柜/U位")).transform;
|
|
go.position = gameObjects[i].transform.position;
|
|
go.SetParent(gameObjects[i].transform);
|
|
go.name = "U位";
|
|
}
|
|
else
|
|
{
|
|
DestroyImmediate(U.gameObject);
|
|
|
|
//if (U.transform.childCount != 42)
|
|
//{
|
|
// for (int j = 0; j < 42; j++)
|
|
// {
|
|
// var g = new GameObject((j + 1).ToString());
|
|
// g.transform.SetParent(U.transform);
|
|
// }
|
|
//}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
[ContextMenu("寻找物体组")]
|
|
public void das()
|
|
{
|
|
GameManager.Inst.FindPortPos();
|
|
}
|
|
|
|
|
|
[ContextMenu("U位修改")]
|
|
public void us()
|
|
{
|
|
List<Transform> ts = new List<Transform>();
|
|
//for (int i = 0; i < transform.childCount; i++)
|
|
//{
|
|
// ts.Add(transform.GetChild(i).transform);
|
|
//}
|
|
//ts.Reverse();
|
|
//for (int i = 0; i < ts.Count; i++)
|
|
//{
|
|
// ts[i].name = (i + 1).ToString();
|
|
//}
|
|
//ts.Reverse();
|
|
|
|
|
|
for (int i = 0; i < Uwei.Count; i++)
|
|
{
|
|
ts.Clear();
|
|
for (int j = 0; j < Uwei[i].childCount; j++)
|
|
{
|
|
ts.Add(Uwei[i].GetChild(j).transform);
|
|
}
|
|
ts.Reverse();
|
|
for (int k = 0; k < ts.Count; k++)
|
|
{
|
|
ts[k].name = (k + 1).ToString();
|
|
}
|
|
SortChildrenByName(ts);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据数字编号排序
|
|
/// </summary>
|
|
[ContextMenu("根据数字编号排序")]
|
|
void SortChildrenByName(List<Transform> children)
|
|
{
|
|
//List<Transform> children = new List<Transform>();
|
|
|
|
//foreach (Transform child in transform)
|
|
//{
|
|
// children.Add(child);
|
|
//}
|
|
|
|
children.Sort((a, b) =>
|
|
{
|
|
int numberA = int.Parse(a.name);
|
|
int numberB = int.Parse(b.name);
|
|
|
|
return numberA.CompareTo(numberB);
|
|
});
|
|
|
|
for (int i = 0; i < children.Count; i++)
|
|
{
|
|
children[i].SetSiblingIndex(i);
|
|
}
|
|
}
|
|
|
|
|
|
[ContextMenu("匹配U位")]
|
|
public void dsad()
|
|
{
|
|
foreach (var item in Uwei)
|
|
{
|
|
for (int i = 0; i < gameObjects.Count; i++)
|
|
{
|
|
if (item.name == gameObjects[i].name)
|
|
{
|
|
item.SetParent(gameObjects[i].transform);
|
|
item.name = "U位";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
[ContextMenu("UI跟随")]
|
|
public void dasda()
|
|
{
|
|
for (int i = 0; i < gameObjects.Count; i++)
|
|
{
|
|
Renderer renderer = null;
|
|
try
|
|
{
|
|
renderer = gameObjects[i].transform.Find(gameObjects[i].name).GetComponent<Renderer>();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
renderer = gameObjects[i].GetComponent<Renderer>();
|
|
}
|
|
if (renderer != null)
|
|
{
|
|
Bounds bounds = renderer.bounds;
|
|
Vector3 topPosition = gameObjects[i].transform.position + new Vector3(0, bounds.size.y, 0);
|
|
UI_follow.GetChild(i).position = topPosition;
|
|
}
|
|
}
|
|
}
|
|
|
|
[ContextMenu("修改机柜")]
|
|
public void dsadsa()
|
|
{
|
|
//var objA = gameObjects[0].GetComponent<DeviceQuery>().deviceList;
|
|
|
|
|
|
//MapperConfiguration config = new MapperConfiguration(cfg =>
|
|
//{
|
|
// cfg.CreateMap<RedactDevice.Body, DeviceQuery.DeviceList>();
|
|
// cfg.CreateMap<DeviceQuery.DeviceList, RedactDevice.Body>();
|
|
//});
|
|
|
|
//IMapper mapper = config.CreateMapper();
|
|
|
|
//// 转换 ClassA 到 ClassB
|
|
//redactDevice.mybody = mapper.Map<RedactDevice.Body>(objA);
|
|
}
|
|
|
|
[ContextMenu("xg端口碰撞器")]
|
|
public void ssadsa()
|
|
{
|
|
|
|
if (transform.Find("端口碰撞器"))
|
|
{
|
|
|
|
for (int i = 0; i < transform.Find("端口碰撞器").childCount; i++)
|
|
{
|
|
transform.Find("端口碰撞器").GetChild(i).SetParent(transform);
|
|
}
|
|
DestroyImmediate(transform.Find("端口碰撞器").gameObject);
|
|
}
|
|
}
|
|
|
|
[ContextMenu("add告警")]
|
|
public void sadsadsasssssss()
|
|
{
|
|
var a = GetComponentsInChildren<DeviceQuery>();
|
|
Array.ForEach(a, item =>
|
|
{
|
|
if (!item.gameObject.GetComponent<TmsAlarmQuery>())
|
|
item.gameObject.AddComponent<TmsAlarmQuery>();
|
|
});
|
|
}
|
|
|
|
[ContextMenu("add温湿度")]
|
|
public void dasd()
|
|
{
|
|
Array.ForEach(gameObjects.ToArray(), item =>
|
|
{
|
|
if (!item.gameObject.GetComponent<ENVQuery>())
|
|
item.gameObject.AddComponent<ENVQuery>();
|
|
});
|
|
}
|
|
|
|
|
|
public GameObject originalObject; // 模型的原始游戏对象
|
|
|
|
[ContextMenu("根据mesh生成立方体")]
|
|
public void GenerateCubeFromMesh()
|
|
{
|
|
//获取原始对象的Mesh
|
|
Mesh originalMesh = originalObject.GetComponent<MeshFilter>().sharedMesh;
|
|
|
|
//创建一个新的游戏对象和网格
|
|
GameObject cubeObject = new GameObject("Cube");
|
|
|
|
Mesh cubeMesh = new Mesh();
|
|
|
|
//设置立方体的顶点数据
|
|
Vector3[] vertices = new Vector3[originalMesh.vertices.Length];
|
|
for (int i = 0; i < vertices.Length; i++)
|
|
{
|
|
vertices[i] = originalMesh.vertices[i];
|
|
}
|
|
|
|
//创建立方体的三角形面
|
|
int[] triangles = new int[originalMesh.triangles.Length];
|
|
for (int i = 0; i < triangles.Length; i++)
|
|
{
|
|
triangles[i] = originalMesh.triangles[i];
|
|
}
|
|
|
|
//将顶点和三角形面设置到网格中
|
|
cubeMesh.vertices = vertices;
|
|
cubeMesh.triangles = triangles;
|
|
|
|
//设置网格的UV坐标和法线
|
|
cubeMesh.uv = originalMesh.uv;
|
|
cubeMesh.normals = originalMesh.normals;
|
|
|
|
//将网格赋值给立方体对象的MeshFilter组件
|
|
MeshFilter cubeMeshFilter = cubeObject.AddComponent<MeshFilter>();
|
|
cubeMeshFilter.mesh = cubeMesh;
|
|
|
|
//添加立方体对象的MeshRenderer组件并共享材质
|
|
MeshRenderer cubeMeshRenderer = cubeObject.AddComponent<MeshRenderer>();
|
|
cubeMeshRenderer.sharedMaterial = originalObject.GetComponent<MeshRenderer>().sharedMaterial;
|
|
|
|
cubeObject.transform.parent = transform;
|
|
}
|
|
|
|
[ContextMenu("添加高亮立方体")]
|
|
public void addcube()
|
|
{
|
|
|
|
for (int i = 0; i < gameObjects.Count; i++)
|
|
{
|
|
// GameObject cubeObject = GameObject.Instantiate(Resources.Load<GameObject>("高亮"), gameObjects[i].transform);
|
|
|
|
//// cubeObject.transform.parent = gameObjects[i].transform;
|
|
|
|
// cubeObject.transform.transform.localPosition = Vector3.zero;
|
|
// cubeObject.transform.transform.localEulerAngles = Vector3.zero;
|
|
// //cubeObject.transform.transform.localScale = Vector3.one;
|
|
|
|
|
|
var a = gameObjects[i].transform.GetChild(gameObjects[i].transform.childCount - 1);
|
|
a.name = "高亮";
|
|
}
|
|
}
|
|
|
|
[ContextMenu("修改tmp字体")]
|
|
public void srtTMP()
|
|
{
|
|
Array.ForEach(GameObject.FindObjectsOfType<TextMeshProUGUI>(true), (item) =>
|
|
{
|
|
if (item.font == null)
|
|
item.font = f_new;
|
|
});
|
|
}
|
|
|
|
[ContextMenu("修改字体")]
|
|
public void setFont()
|
|
{
|
|
Array.ForEach(GameObject.FindObjectsOfType<Text>(true), (item) =>
|
|
{
|
|
if (item.font == null)
|
|
item.font = font_new;
|
|
});
|
|
}
|
|
|
|
[ContextMenu("端口修改层级")]
|
|
public void setport()
|
|
{
|
|
Array.ForEach(transform.GetComponentsInChildren<PortQuery>(), (item) =>
|
|
{
|
|
item.gameObject.layer = 11;
|
|
});
|
|
}
|
|
|
|
[ContextMenu("add端口高亮")]
|
|
public void addporthight()
|
|
{
|
|
Array.ForEach(transform.GetComponentsInChildren<PortQuery>(), (item) =>
|
|
{
|
|
if (!item.transform.Find("端口高亮"))
|
|
{
|
|
//GameObject go = Instantiate(prefab);
|
|
prefab.transform.SetParent(item.transform);
|
|
prefab.name = "端口高亮";
|
|
}
|
|
});
|
|
}
|
|
|
|
[ContextMenu("加门脚本")]
|
|
public void adddoor()
|
|
{
|
|
var s = Array.FindAll(GameObject.FindObjectsOfType<Transform>(), (itme) =>
|
|
{
|
|
return itme.name == "门把手";
|
|
});
|
|
|
|
for (int i = 0; i < s.Length; i++)
|
|
{
|
|
if (!s[i].Find("Canvas/Image").GetComponent<Door>())
|
|
s[i].Find("Canvas/Image").gameObject.AddComponent<Door>();
|
|
}
|
|
}
|
|
|
|
[ContextMenu("预制体加透明脚本")]
|
|
public void tm()
|
|
{
|
|
Array.ForEach(transform.GetComponentsInChildren<Transform>(), (item) =>
|
|
{
|
|
if (!item.gameObject.GetComponent<TransparentGlow>())
|
|
item.gameObject.AddComponent<TransparentGlow>();
|
|
});
|
|
}
|
|
|
|
|
|
[ContextMenu("板卡预制体加检测器")]
|
|
public void DSA()
|
|
{
|
|
var a = Array.FindAll(transform.GetComponentsInChildren<PortQuery>(), (item) =>
|
|
{
|
|
return true;
|
|
}).ToList();
|
|
|
|
foreach (var item in a)
|
|
{
|
|
Renderer renderer = item.transform.parent.GetComponent<Renderer>();
|
|
if (renderer != null)
|
|
{
|
|
|
|
var initrot = item.transform.parent.transform.rotation;
|
|
item.transform.parent.transform.rotation = Quaternion.Euler(Vector3.zero);
|
|
item.transform.parent.transform.rotation = Quaternion.identity;
|
|
|
|
var bounds = renderer.bounds;
|
|
if (item.transform.parent.gameObject.GetComponent<BoxCollider>())
|
|
{
|
|
if (!item.transform.parent.GetComponent<ClickEvent>())
|
|
{
|
|
item.transform.parent.gameObject.AddComponent<ClickEvent>();
|
|
item.transform.parent.gameObject.layer = 13;
|
|
}
|
|
continue;
|
|
}
|
|
var aa = item.transform.parent.gameObject.AddComponent<BoxCollider>();
|
|
aa.isTrigger = false;
|
|
aa.center = bounds.center - item.transform.parent.transform.position;
|
|
|
|
aa.size = bounds.size;
|
|
|
|
|
|
item.transform.parent.transform.rotation = initrot;
|
|
|
|
}
|
|
if (!item.transform.parent.GetComponent<ClickEvent>())
|
|
{
|
|
item.transform.parent.gameObject.AddComponent<ClickEvent>();
|
|
item.transform.parent.gameObject.layer = 13;
|
|
}
|
|
}
|
|
}
|
|
[ContextMenu("同步容积")]
|
|
public void tbrj()
|
|
{
|
|
GetComponent<DragTest1>().volume = GetComponent<DragTest>().volume;
|
|
}
|
|
|
|
[ContextMenu("修改机柜结构")]
|
|
public void setCabinets()
|
|
{
|
|
for (int i = gameObjects.Count - 1; i >= 0; i--)
|
|
{
|
|
if (gameObjects[i].transform.Find(gameObjects[i].name))
|
|
{
|
|
var go = gameObjects[i].transform.Find(gameObjects[i].name);
|
|
go.SetParent(transform);
|
|
|
|
var c = gameObjects[i].transform;
|
|
for (int j = c.childCount - 1; j >= 0; j--)
|
|
{
|
|
c.GetChild(j).SetParent(go);
|
|
}
|
|
var d_old = gameObjects[i].gameObject.GetComponent<DeviceQuery>();
|
|
var d_new = go.gameObject.AddComponent<DeviceQuery>();
|
|
d_new.deviceList.type = d_old.deviceList.type;
|
|
d_new.deviceList.devicePosition = d_old.deviceList.devicePosition;
|
|
|
|
DestroyImmediate(gameObjects[i].gameObject);
|
|
ReverseChildren(go);
|
|
}
|
|
else
|
|
{
|
|
gameObjects[i].transform.SetParent(transform);
|
|
}
|
|
}
|
|
|
|
SortChildrenByName();
|
|
}
|
|
|
|
void SortChildrenByName()
|
|
{
|
|
List<Transform> children = new List<Transform>();
|
|
|
|
// 获取物体的所有子物体
|
|
for (int i = 0; i < transform.childCount; i++)
|
|
{
|
|
children.Add(transform.GetChild(i));
|
|
}
|
|
|
|
// 按照名字进行排序
|
|
children.Sort((a, b) =>
|
|
{
|
|
int aIndex = int.Parse(a.name.Replace("R", ""));
|
|
int bIndex = int.Parse(b.name.Replace("R", ""));
|
|
return aIndex.CompareTo(bIndex);
|
|
});
|
|
|
|
// 重新设置子物体的顺序
|
|
for (int i = 0; i < children.Count; i++)
|
|
{
|
|
children[i].SetSiblingIndex(i);
|
|
}
|
|
}
|
|
|
|
void ReverseChildren(Transform go)
|
|
{
|
|
int childCount = go.childCount;
|
|
|
|
for (int i = 0; i < childCount / 2; i++)
|
|
{
|
|
int opposite = childCount - 1 - i;
|
|
Transform child = go.GetChild(i);
|
|
Transform oppositeChild = go.GetChild(opposite);
|
|
|
|
// 交换子物体的位置
|
|
child.SetSiblingIndex(opposite);
|
|
oppositeChild.SetSiblingIndex(i);
|
|
}
|
|
}
|
|
|
|
|
|
[ContextMenu("调整锚点位置")]
|
|
public void set_MaoDian_pos()
|
|
{
|
|
var v = transform.Find("锚点");
|
|
if (v)
|
|
{
|
|
v.SetParent(null);
|
|
v.SetParent(transform);
|
|
}
|
|
}
|
|
|
|
[ContextMenu("寻找设置板卡网格")]
|
|
public void findSetMesh()
|
|
{
|
|
MeshCollider[] meshColliders = transform.GetComponentsInChildren<MeshCollider>();
|
|
|
|
for (int i = 0; i < meshColliders.Length; i++)
|
|
{
|
|
if (meshColliders[i].gameObject.GetComponent<MeshFilter>())
|
|
meshColliders[i].sharedMesh = meshColliders[i].gameObject.GetComponent<MeshFilter>().mesh;
|
|
}
|
|
}
|
|
}
|