using DG.Tweening; using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.EventSystems; /// /// 点击脚本 /// public class ClickEvent : MonoBehaviour { /// /// 物体是否透明 /// public bool isTransparentGlow = false; /// /// 放大状态 /// public bool My_magnifyState = false; private List meshRenderers; /// /// 自身的 /// private List materials; /// /// 复制出来的 /// public List empty = new List(); public Shader TransparentGlow_Shader; /// /// 坐标偏移值 /// //[SerializeField] Vector3 yiDong_pos = new Vector3(1.5f, 0.5f, 0); //[SerializeField] Vector3 yiDong_pos = new Vector3(2.1f, 0.2f, 0); [SerializeField] Vector3 yiDong_pos = new Vector3(2.1f, 1.1f, 0); /// /// 角度偏移值 /// [SerializeField] Vector3 fangDa_rot = new Vector3(0, -90, 0); public List MeshRenderers { get { if (meshRenderers == null) meshRenderers = GetComponentsInChildren().ToList(); return meshRenderers; } } public List Materials { get { if (materials == null) { materials = new List(); MeshRenderers.ForEach(render => { Array.ForEach(render.materials, (_mat) => { if (!materials.Contains(_mat)) { materials.Add(_mat); Material _emp = new Material(_mat); empty.Add(_emp); } }); }); } return materials; } } public static Transform selected_cabient; // Start is called before the first frame update void Start() { TransparentGlow_Shader = Resources.Load("TransparentGlow"); } // Update is called once per frame void Update() { if (!EventSystem.current.IsPointerOverGameObject() && Input.GetMouseButtonDown(0) && TransparentGlowManage.Inst.gameObject.activeSelf) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit/* = new RaycastHit()*/; if (/*GameManager.Inst.magnifyState && */Menu.M_数字孪生_场景管理 != CabinetUIManager.Instance.current_menu && !DOTween.IsTweening(ExtendedFlycam.Inst.gameObject)) { if (Physics.Raycast(ray, out hit, 100, 1 << 14 | 1 << 6 | 1 << 8 | 1 << 13 | 1 << 11))//机柜-6 门-14 蓄电池-15 { if (hit.collider.gameObject.layer != 11 && (!GameManager.Inst.magnifyState || (GameManager.Inst.magnifyState && GameManager.Inst.FindParent(hit.collider.gameObject, GameManager.Inst.IsDesiredParent) == GameManager.Inst.nowCabine)) && !PatternChoose.Inst.sb_xz_page.activeSelf && !PatternChoose.Inst.sb_bj_page.activeSelf && !PatternChoose.Inst.dk_xz_page.activeSelf && !PatternChoose.Inst.dk_bj_page.activeSelf && !WebInteraction.Inst.isVideoPlay ) { if (hit.collider.gameObject.layer == 14 && hit.collider.transform.parent.gameObject == gameObject) { var d = gameObject.GetComponent(); if (d) { PatternChoose.Inst.sb_ck_page.SetActive(false); GameManager.Inst.now_CK_Device = gameObject; Change_hide(gameObject, false, false, false); } //return; } //else if (GameManager.Inst.FindParent(hit.collider.gameObject, GameManager.Inst.IsDesiredParent) != GameManager.Inst.nowCabine) // return; else if (hit.collider.gameObject == gameObject && (gameObject.layer == 8 || gameObject.layer == 6 || gameObject.layer == 13)) { var d = gameObject.GetComponent(); if (d) { PatternChoose.Inst.sb_ck_page.SetActive(false); GameManager.Inst.now_CK_Device = gameObject; Change_hide(gameObject, false, false, false); } } } } } if (Menu.M_数字孪生_场景管理 == CabinetUIManager.Instance.current_menu && GameManager.Inst.magnifyState) { if (Physics.Raycast(ray, out hit, 100, 1 << 8 | 1 << 14 | 1 << 13))//模型(设备)-8 门-14 { if (hit.collider.gameObject.layer == 14) return; if (hit.collider.gameObject == gameObject) { GameManager.Inst.nowDevice = null; GameManager.Inst.nowDeviceID = null; Debug.Log("点击到配置" + gameObject.name); //PatternChoose.Inst.sb_bj_page.SetActive(false); //PatternChoose.Inst.sb_xz_page.SetActive(false); //PatternChoose.Inst.dk_bj_page.SetActive(false); //PatternChoose.Inst.dk_xz_page.SetActive(false); //PatternChoose.Inst.sb_ck_page.SetActive(false); PatternChoose.Inst.clspup(); GameManager.Inst.now_CK_Device = null; GameManager.Inst.search_box.SetActive(false); var d = gameObject.GetComponent(); var cabinet = GameManager.Inst.FindParent(gameObject, GameManager.Inst.IsDesiredParent); DragController drag = GameManager.Inst.gameObject.GetComponent().dragController.GetComponent(); if (d && GameManager.Inst.magnifyState) { if (string.IsNullOrEmpty(d.deviceList.id)) { GameManager.Inst.lastDevice = gameObject; GameManager.Inst.lastDeviceID = null; GameManager.Inst.nowDevice = gameObject; //PatternChoose.Inst.transform.Find("设备类/设备新增").gameObject.SetActive(true);//√ } else { GameManager.Inst.lastDevice = gameObject; GameManager.Inst.lastDeviceID = d.deviceList.id; GameManager.Inst.nowDeviceID = d.deviceList.id; GameManager.Inst.nowDevice = gameObject; //PatternChoose.Inst.sb_bj_page.SetActive(false);.gameObject.SetActive(true);//√ } if (string.IsNullOrEmpty(d.deviceList.id) && d.deviceList.deviceType == "3") { PatternChoose.Inst.sb_xz_page.SetActive(true); GameManager.Inst.objectToShow_add.SetActive(false); } else if (!string.IsNullOrEmpty(d.deviceList.id) && d.deviceList.deviceType == "3") { PatternChoose.Inst.sb_bj_page.SetActive(true); GameManager.Inst.objectToShow_add.SetActive(false); } else if (drag && GameManager.Inst.nowCabine == cabinet) { GameManager.Inst.now_CK_Device = gameObject; PatternChoose.Inst.sb_ck_page.SetActive(false); drag.uPosManger = GameManager.Inst.FindParent(gameObject, GameManager.Inst.IsFindParent_UPosManger).GetComponent(); GameManager.Inst.gameObject.GetComponent().uposManger = drag.uPosManger; //drag.oriObjectPrefab = gameObject.GetComponent(); gameObject.GetComponent().OnselfClick(); GameManager.Inst.objectToShow_add.SetActive(true); } else GameManager.Inst.editorMenu.gameObject.SetActive(false); } } } } else if (Menu.M_数字孪生_线缆连接_配置 == CabinetUIManager.Instance.current_menu && GameManager.Inst.magnifyState && GameManager.Inst.FindParent(gameObject, GameManager.Inst.IsDesiredParent) == GameManager.Inst.nowCabine) { if (Physics.Raycast(ray, out hit, 100, 1 << 11 /*| 1 << 14*/)) { if (hit.collider.gameObject.layer == 14) return; if (hit.collider.gameObject == gameObject) { for (int i = 0; i < GameManager.Inst.Cabinets_go.Count; i++) { if (GameManager.Inst.Cabinets_go[i].activeSelf /*&&GameManager.Inst.Cabinets_go[i] != GameManager.Inst.FindParent(gameObject, GameManager.Inst.IsDesiredParent)*/) { GameManager.Inst.Cabinets_go[i].GetComponent().F1(); } } var g = GameManager.Inst.FindParent(gameObject, GameManager.Inst.IsFindRacks_go); if (g != null) g.GetComponent().F2(); GameManager.Inst.nowDevice = null; GameManager.Inst.nowDeviceID = null; Debug.Log("点击到配置" + gameObject.name); //PatternChoose.Inst.sb_bj_page.SetActive(false); //PatternChoose.Inst.sb_xz_page.SetActive(false); //PatternChoose.Inst.dk_bj_page.SetActive(false); //PatternChoose.Inst.dk_xz_page.SetActive(false); //PatternChoose.Inst.sb_ck_page.SetActive(false); PatternChoose.Inst.clspup(); GameManager.Inst.now_CK_Device = null; var p = gameObject.GetComponent(); if (p) { MeshRenderer renderer = p.hight.GetComponent(); Material[] materials = renderer.materials; Material[] newMaterials = materials.Clone() as Material[]; if (string.IsNullOrEmpty(p.portList.id)) { if (GameManager.Inst.lastDevice) { if (GameManager.Inst.lastDevice != gameObject && GameManager.Inst.lastDevice.GetComponent()) { MeshRenderer renderer1 = GameManager.Inst.lastDevice.GetComponent().hight.GetComponent(); Material[] materials1 = renderer1.materials; Material[] newMaterials1 = materials1.Clone() as Material[]; newMaterials1[0] = Resources.Load("Materials/4Tou"); renderer1.materials = newMaterials; } //GameManager.Inst.lastDevice.GetComponent().hight.GetComponent().materials[0] = Resources.Load("Materials/4Tou"); } GameManager.Inst.lastDevice = gameObject; GameManager.Inst.lastDeviceID = null; GameManager.Inst.nowDevice = gameObject; newMaterials[0] = Resources.Load("Materials/1Tou"); renderer.materials = newMaterials; //p.hight.GetComponent().materials[0] = Resources.Load("Materials/1Tou"); //PatternChoose.Inst.transform.Find("端口类/端口新增").gameObject.SetActive(true);//√ PatternChoose.Inst.dk_xz_page.gameObject.SetActive(true);//√ } else { if (GameManager.Inst.lastDevice) { if (GameManager.Inst.lastDevice != gameObject && GameManager.Inst.lastDevice.GetComponent()) { MeshRenderer renderer1 = GameManager.Inst.lastDevice.GetComponent().hight.GetComponent(); Material[] materials1 = renderer1.materials; Material[] newMaterials1 = materials1.Clone() as Material[]; newMaterials1[0] = Resources.Load("Materials/4Tou"); renderer1.materials = newMaterials; } //GameManager.Inst.lastDevice.GetComponent().hight.GetComponent().materials[0] = Resources.Load("Materials/4Tou"); } GameManager.Inst.lastDevice = gameObject; GameManager.Inst.lastDeviceID = p.portList.id; GameManager.Inst.nowDeviceID = p.portList.id; GameManager.Inst.nowDevice = gameObject; newMaterials[0] = Resources.Load("Materials/1Tou"); renderer.materials = newMaterials; //p.hight.GetComponent().materials[0] = Resources.Load("Materials/1Tou"); PatternChoose.Inst.dk_bj_page.gameObject.SetActive(true);//√ } } } } if (gameObject != GameManager.Inst.nowCabine) { if (Physics.Raycast(ray, out hit, 100, 1 << 6 | 1 << 14)) { if (hit.collider.gameObject.layer == 14) return; if (hit.collider.gameObject.GetComponent().deviceList.type == "1" && hit.collider.gameObject.GetComponent().isTransparentGlow) { //放大 if (hit.collider.gameObject == gameObject && !My_magnifyState) { Change_hide(gameObject, true, true); } } } } } #region MyRegion ////点击模型(配置) //if (Physics.Raycast(ray, out hit, 100, 1 << 8)) //{ // if (hit.collider.gameObject == gameObject) // { // if (Menu.M_数字孪生_场景管理 == CabinetUIManager.Instance.current_menu) // { // GameManager.Inst.search_box.SetActive(false); // var d = gameObject.GetComponent(); // if (d) // { // if (string.IsNullOrEmpty(d.deviceList.id)) // { // GameManager.Inst.nowDevice = gameObject; // PatternChoose.Inst.transform.Find("设备类/设备新增").gameObject.SetActive(true);//√ // } // else // { // GameManager.Inst.nowDeviceID = d.deviceList.id; // GameManager.Inst.nowDevice = gameObject; // PatternChoose.Inst.sb_bj_page.SetActive(false);.gameObject.SetActive(true);//√ // } // } // } // else if (Menu.M_数字孪生_线缆连接_配置 == CabinetUIManager.Instance.current_menu) // { // var p = gameObject.GetComponent(); // if (p) // { // if (string.IsNullOrEmpty(p.portList.id)) // { // GameManager.Inst.nowDevice = gameObject; // PatternChoose.Inst.transform.Find("端口类/端口新增").gameObject.SetActive(true);//√ // } // else // { // GameManager.Inst.nowDeviceID = p.portList.id; // GameManager.Inst.nowDevice = gameObject; // PatternChoose.Inst.transform.Find("端口类/端口配置").gameObject.SetActive(true);//√ // } // } // } // else // { // PatternChoose.Inst.sb_bj_page.SetActive(false);.gameObject.SetActive(false); // PatternChoose.Inst.dk_bj_page.SetActive(false); // } // } //} #endregion //不虚化 else if (!GameManager.Inst.magnifyState && Physics.Raycast(ray, out hit, 100, 1 << 6 | 1 << 14 | 1 << 15 /*| 1 << 8*/| 1 << 17))//机柜-6 门-14 蓄电池-15 { if (hit.collider.gameObject.layer == 17) return; //放大 if (hit.collider.gameObject == gameObject && !My_magnifyState /*&& gameObject.layer != 8*/) { PatternChoose.Inst.sb_ck_page.SetActive(false); GameManager.Inst.now_CK_Device = null; Change_hide(gameObject, true, true); } ////缩小 //else if (hit.collider.gameObject == gameObject && My_magnifyState && gameObject.layer == 8) //{ // var d = gameObject.GetComponent(); // if (d) // { // GameManager.Inst.now_CK_Device = gameObject; // Change_hide(gameObject, false, false); // } //} } else if (GameManager.Inst.magnifyState && Physics.Raycast(ray, out hit, 100, 1 << 6 | 1 << 14 | 1 << 15 /*| 1 << 8*/| 1 << 17))//机柜-6 门-14 蓄电池-15 { if (hit.collider.gameObject.layer == 17) return; //放大 if (GameManager.Inst.FindParent(hit.collider.gameObject, GameManager.Inst.IsDesiredParent) != GameManager.Inst.nowCabine || hit.collider.gameObject.layer == 15) { if (!My_magnifyState && (hit.collider.gameObject == gameObject || (hit.collider.gameObject.layer == 14 && hit.collider.transform.parent.gameObject == gameObject))) { PatternChoose.Inst.sb_ck_page.SetActive(false); GameManager.Inst.now_CK_Device = null; Change_hide(gameObject, true, true); } } } #region 虚化非点击 ////虚化非点击 //else if (Physics.Raycast(ray, out hit, 100, 1 << 6)) //{ // //点到,本身透明,场景透明模式 // if (hit.collider.gameObject == gameObject && isTransparentGlow && TransparentGlowManage.Inst.is_transparency) // { // ChangeBig_TouMing(); // } // //点到,本身非透明,场景透明模式 // else if (hit.collider.gameObject == gameObject && !isTransparentGlow && TransparentGlowManage.Inst.is_transparency) // { // ChangeSmall_renewALL(); // } // //点到,本身非透明,场景非透明模式 // else if (hit.collider.gameObject == gameObject && !isTransparentGlow && !TransparentGlowManage.Inst.is_transparency) // { // ChangeBig_(); // } //} #endregion } } private void OnMouseEnter() { if (!CabinetUIManager.Instance) return; if (CabinetUIManager.Instance.current_menu == Menu.M_数字孪生_机柜容量) { DeviceQuery d = null; try { d = GetComponent(); } catch (Exception) { return; } if (d) { if (d.deviceList.type == "1") { VolumeImg v = null; try { v = transform.Find("容量/Canvas").GetComponent(); } catch { return; } if (!v) return; v.Image.gameObject.SetActive(true); v.textMeshProUGUI.text = "剩余" + d.deviceList.residueNum + "个U位置"; } else return; } else return; } else if (CabinetUIManager.Instance.current_menu == Menu.M_数字孪生_智能巡检) { var d = GetComponent(); if (d.deviceList.type == "1") { if (EventSystem.current.IsPointerOverGameObject()) return; var digital = transform.Find("智能巡检").GetComponent(); digital.ShowUI(); } } } private void OnMouseExit() { if (!CabinetUIManager.Instance) return; if (CabinetUIManager.Instance.current_menu == Menu.M_数字孪生_机柜容量) { DeviceQuery d = null; try { d = GetComponent(); } catch (Exception) { return; } if (d) { if (d.deviceList.type == "1") { VolumeImg v = null; try { v = transform.Find("容量/Canvas").GetComponent(); } catch { return; } if (!v) return; v.Image.gameObject.SetActive(false); } else return; } else return; } else if (CabinetUIManager.Instance.current_menu == Menu.M_数字孪生_智能巡检) { var d = GetComponent(); if (d.deviceList.type == "1") { var digital = transform.Find("智能巡检").GetComponent(); digital.HideUI(); } } } /// /// 本身透明 /// [ContextMenu("透明")] public void F1() { isTransparentGlow = true; //for (int i = 0; i < Materials.Count; i++) //{ // Materials[i].shader = TransparentGlow_Shader; //} if (GetComponent()) GetComponent().F1(); } /// /// 本身恢复原材质 /// [ContextMenu("恢复原材质")] public void F2() { isTransparentGlow = false; //for (int i = 0; i < Materials.Count; i++) //{ // Materials[i].shader = empty[i].shader; //} if (GetComponent()) GetComponent().F2(); } /// /// 变大=>场景透明,自身不变 /// public void ChangeBig_TouMing() { ExtendedFlycam.Inst.init_mainCamera_rot(); isTransparentGlow = true; // 物体被点击 Debug.Log("放大点击到" + gameObject.name); //Renderer renderer = GetComponent(); Renderer renderer = null; //if (transform.childCount != 0) // renderer = transform.Find(transform.name).GetComponent(); //else // renderer = transform.GetComponent(); try { renderer = transform.Find(transform.name).GetComponent(); } catch (Exception) { if (!renderer) renderer = transform.GetComponentInChildren(); } Vector3 center = renderer.bounds.center; Vector3 targetPosition = new Vector3(center.x + yiDong_pos.x, center.y + yiDong_pos.y, center.z + yiDong_pos.z); Quaternion targetRotation = Quaternion.Euler(fangDa_rot); Camera.main.transform.DOMove(targetPosition, 1f); Camera.main.transform.DORotateQuaternion(targetRotation, 1f).OnComplete(() => { //更新相机初始旋转角度 ExtendedFlycam.Inst.initialRotationEulerAngles = Camera.main.transform.localEulerAngles; }); TransparentGlowManage.Inst.transparencyALL(); F2(); } /// /// 变小=>场景恢复 /// public void ChangeSmall_renewALL() { ExtendedFlycam.Inst.init_mainCamera_rot(); isTransparentGlow = false; // 物体被点击 Debug.Log("缩小点击到" + gameObject.name); Camera.main.transform.DOMove(TransparentGlowManage.Inst.MainCamera_pos, 1f); Camera.main.transform.DORotateQuaternion(Quaternion.Euler(TransparentGlowManage.Inst.MainCamera_rot), 1f).OnComplete(() => { //更新相机初始旋转角度 ExtendedFlycam.Inst.initialRotationEulerAngles = Camera.main.transform.localEulerAngles; }); TransparentGlowManage.Inst.renewALL(); } public void ChangeBig_() { ExtendedFlycam.Inst.init_mainCamera_rot(); isTransparentGlow = true; // 物体被点击 Debug.Log("放大点击到" + gameObject.name); //Renderer renderer = GetComponent(); Renderer renderer = null; //if (transform.childCount != 0) // renderer = transform.Find(transform.name).GetComponent(); //else // renderer = transform.GetComponent(); try { renderer = transform.Find(transform.name).GetComponent(); } catch (Exception) { if (!renderer) renderer = transform.GetComponentInChildren(); } Vector3 center = renderer.bounds.center; Vector3 targetPosition = new Vector3(center.x + yiDong_pos.x, center.y + yiDong_pos.y, center.z + yiDong_pos.z); Quaternion targetRotation = Quaternion.Euler(fangDa_rot); Camera.main.transform.DOMove(targetPosition, 1f); Camera.main.transform.DORotateQuaternion(targetRotation, 1f).OnComplete(() => { //更新相机初始旋转角度 ExtendedFlycam.Inst.initialRotationEulerAngles = Camera.main.transform.localEulerAngles; }); TransparentGlowManage.Inst.transparencyALL(); F2(); } /// /// 机柜隐藏+是否拉近镜头 /// /// 机柜隐藏 /// 是否拉近镜头 public void Change_hide(GameObject cabine, bool isHide, bool isZoomin, bool setNowCabine = true) { //GameManager.Inst.nowCabine = cabine; if (cabine.layer != 15) //cabine = GameManager.Inst.nowCabine; cabine = GameManager.Inst.FindParent(cabine, GameManager.Inst.IsDesiredParent); if (setNowCabine) GameManager.Inst.nowCabine = cabine; //放大 if (isZoomin) Zoomin(cabine); //缩小 else //Zoomout(cabine); Device_popup(cabine); if (isZoomin) { if (CabinetUIManager.Instance.cabine_hights_now.Count == 0) { for (int i = 0; i < CabinetUIManager.Instance.cabine_hights.Count; i++) { if (CabinetUIManager.Instance.cabine_hights[i].activeSelf) { CabinetUIManager.Instance.cabine_hights[i].SetActive(false); CabinetUIManager.Instance.cabine_hights_now.Add(CabinetUIManager.Instance.cabine_hights[i]); } } } } //else //{ // for (int i = 0; i < CabinetUIManager.Instance.cabine_hights_now.Count; i++) // { // CabinetUIManager.Instance.cabine_hights_now[i].SetActive(true); // } // CabinetUIManager.Instance.cabine_hights_now.Clear(); //} if (gameObject.layer == 15) return; string s1 = gameObject.GetComponent().deviceList.devicePosition.Split('-')[0]; if (Menu.M_数字孪生_线缆连接_展示 == CabinetUIManager.Instance.current_menu) { } else if (Menu.M_全景监控_现场作业 == CabinetUIManager.Instance.current_menu) { WebInteraction.Inst.CloseVideo("All"); //string p = cabine.GetComponent().deviceList.devicePosition.Split("-")[0].ToUpper(); //WebInteraction.Inst.OpenVideo("摄像头编号"); //switch (p) //{ // case "A": // { // WebInteraction.Inst.OpenVideo("09"); // break; // } // case "B": // { // WebInteraction.Inst.OpenVideo("08"); // break; // } // case "C": // { // WebInteraction.Inst.OpenVideo("07"); // break; // } // case "D": // { // WebInteraction.Inst.OpenVideo("06"); // break; // } // case "E": // { // WebInteraction.Inst.OpenVideo("05"); // break; // } // case "F": // { // WebInteraction.Inst.OpenVideo("04"); // break; // } // case "G": // { // WebInteraction.Inst.OpenVideo("03"); // break; // } // case "H": // { // WebInteraction.Inst.OpenVideo("02"); // break; // } // case "I": // { // WebInteraction.Inst.OpenVideo("01"); // break; // } // default: // break; //} FindVideo(cabine); } if (Menu.M_数字孪生_接地网 != CabinetUIManager.Instance.current_menu) { if (isHide) { for (int i = 0; i < GameManager.Inst.Cabinets_go.Count; i++) { string s2 = GameManager.Inst.Cabinets_go[i].GetComponent().deviceList.devicePosition.Split('-')[0]; if (s1 != s2) { GameManager.Inst.Cabinets_go[i].SetActive(!isHide); } else if (s1 == s2 && GameManager.Inst.Cabinets_go[i] != gameObject) { GameManager.Inst.Cabinets_go[i].GetComponent().F1(); GameManager.Inst.Cabinets_go[i].SetActive(true); } //Array.ForEach(GameManager.Inst.Cabinets_go[i].GetComponentsInChildren(true), (itme) => //{ // itme.gameObject.GetComponent().enabled = false; //}); } //Array.ForEach(gameObject.GetComponentsInChildren(true), (itme) => //{ // itme.gameObject.GetComponent().enabled = true; //}); gameObject.SetActive(true); gameObject.GetComponent().F2(); } //else //{ // for (int i = 0; i < GameManager.Inst.Cabinets_go.Count; i++) // { // string s2 = GameManager.Inst.Cabinets_go[i].GetComponent().deviceList.devicePosition.Split('-')[0]; // if (s1 != s2) // GameManager.Inst.Cabinets_go[i].SetActive(!isHide); // else if (s1 == s2 && GameManager.Inst.Cabinets_go[i] != gameObject) // GameManager.Inst.Cabinets_go[i].GetComponent().F2(); // } // for (int i = 0; i < GameManager.Inst.roomDoors.Count; i++) // { // GameManager.Inst.roomDoors[i].gameObject.GetComponent().enabled = true; // } //} } if (Menu.M_全景监控_柜门状态 != CabinetUIManager.Instance.current_menu) { #region old //if (isZoomin) //{ // for (int i = 0; i < GameManager.Inst.Cabinets_go.Count; i++) // { // if (cabine == GameManager.Inst.Cabinets_go[i]) // { // if (cabine.transform.Find("门把手") == null || GameManager.Inst.Cabinets_go[i].transform.Find("门把手") == null) // continue; // var door = cabine.transform.Find("门把手").GetComponentInChildren(true); // GameManager.Inst.power_open(cabine, "全开"); // //door.TextMeshProUGUI.text = "关门"; // door.isopen = !door.isopen; // } // else if (cabine && cabine != GameManager.Inst.Cabinets_go[i]) // { // if (GameManager.Inst.Cabinets_go[i].transform.Find("门把手") == null || // !GameManager.Inst.Cabinets_go[i].activeSelf) // continue; // var door = GameManager.Inst.Cabinets_go[i].transform.Find("门把手").GetComponentInChildren(true); // GameManager.Inst.power_close(GameManager.Inst.Cabinets_go[i], "全关"); // //door.TextMeshProUGUI.text = "开门"; // door.isopen = !door.isopen; // } // } // for (int i = 0; i < GameManager.Inst.Racks_go.Count; i++) // { // if (!GameManager.Inst.Racks_go[i].activeSelf) // continue; // if (GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "6" || // GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "7") // GameManager.Inst.Racks_go[i].transform.Find("前盖").gameObject.SetActive(false); // } //} //else //{ // if (cabine && cabine == gameObject && cabine.transform.Find("门把手")) // { // var door = cabine.transform.Find("门把手").GetComponentInChildren(true); // //if (door.TextMeshProUGUI.text == "开门") return; // GameManager.Inst.power_close(cabine, "全关"); // //door.TextMeshProUGUI.text = "开门"; // door.isopen = !door.isopen; // } // for (int i = 0; i < GameManager.Inst.Racks_go.Count; i++) // { // if (GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "6" || // GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "7") // GameManager.Inst.Racks_go[i].transform.Find("前盖").gameObject.SetActive(true); // } //} #endregion if (isZoomin) { GameManager.Inst.power_close(); GameManager.Inst.power_open(cabine, "全开"); openCap(isZoomin); } //openCap(isZoomin); //else //{ // GameManager.Inst.power_close(); // openCap(isZoomin); //} } } /// /// 模型微调(打开前盖) /// /// 是否为放大状态 public void openCap(bool isZoomin) { for (int i = 0; i < GameManager.Inst.Racks_go.Count; i++) { if (!GameManager.Inst.Racks_go[i].activeSelf) continue; if (GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "6" || GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "7" || GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "20" || GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "21" || GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "91" || GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "92" || GameManager.Inst.Racks_go[i].GetComponent().deviceList.modelNum == "93") GameManager.Inst.Racks_go[i].transform.Find("前盖").gameObject.SetActive(!isZoomin); } } /// /// 放大镜头 /// public void Zoomin(GameObject cabine) { if (CabinetUIManager.Instance.current_menu == Menu.M_数字孪生_场景管理) GameManager.Inst.search_box.SetActive(false); ExtendedFlycam.Inst.CameraRtDisable(); ExtendedFlycam.Inst.QieHuan(CabinetUIManager.Instance.current_menu, 99); //GameManager.Inst.magnifyState = true; TransparentGlowManage.Inst.is_magnify = true; if (cabine.layer != 15) { if (Menu.M_数字孪生_线缆连接_配置 == CabinetUIManager.Instance.current_menu) { Array.ForEach(cabine.GetComponentsInChildren(), (itme) => { Renderer renderer = itme.transform.GetChild(0).GetComponent(); Material[] sharedMaterials = renderer.sharedMaterials; sharedMaterials[0] = Resources.Load("Materials/4Tou"); ; renderer.sharedMaterials = sharedMaterials; itme.hight.SetActive(true); }); } else if (Menu.M_数字孪生_场景管理 == CabinetUIManager.Instance.current_menu) { if (!GameManager.Inst.objectToShow_add.activeSelf) { GameManager.Inst.objectToShow_add.SetActive(true); } } if (Menu.M_数字孪生_线缆连接_配置 != CabinetUIManager.Instance.current_menu) { Array.ForEach(cabine.GetComponentsInChildren(), (itme) => { itme.hight.SetActive(false); }); } if (cabine.transform.Find("U位")) GameManager.Inst.gameObject.GetComponent().dragController.uPosManger = cabine.transform.Find("U位").GetComponent(); if (Menu.M_全景监控_现场作业 == CabinetUIManager.Instance.current_menu) { WebInteraction.Inst.CloseVideo("All"); FindVideo(cabine); } } if (Menu.M_全景监控_摄像头 == CabinetUIManager.Instance.current_menu) { if (cabine.name.Contains("蓄电池")) { for (int i = 0; i < ExtendedFlycam.Inst.peiDianShi.Count; i++) { ExtendedFlycam.Inst.peiDianShi[i].SetActive(true); } } } if (selected_cabient != null) { CameraMgr.Instance.camera_Rt.KillCameraDotween(); } if (selected_cabient == null) { CameraMgr.Instance.StoreTarget(); selected_cabient = cabine.transform; } //ExtendedFlycam.Inst.init_mainCamera_rot(); // 物体被点击 Debug.Log("放大点击到" + gameObject.name); if (GetComponent()) { GameManager.Inst.nowDevice = gameObject; GameManager.Inst.nowDeviceID = GetComponent().deviceList.id; } else if (gameObject.layer == 15) { } else return; Renderer renderer = null; try { renderer = transform.Find(transform.name).GetComponent(); } catch (Exception) { if (!renderer) renderer = transform.GetComponentInChildren(); } Array.ForEach(GameObject.FindObjectsOfType(), itme => { itme.My_magnifyState = false; }); My_magnifyState = true; Vector3 center = renderer.bounds.center; //Vector3 targetPosition = new Vector3(center.x + yiDong_pos.x, center.y + yiDong_pos.y, center.z + yiDong_pos.z); Vector3 targetPosition = new Vector3(center.x, center.y, center.z) + yiDong_pos; Quaternion targetRotation = Quaternion.Euler(fangDa_rot); Camera.main.transform.DOMove(targetPosition, 1f); Camera.main.transform.DORotateQuaternion(targetRotation, 1f).OnComplete(() => { //更新相机初始旋转角度 //ExtendedFlycam.Inst.initialRotationEulerAngles = Camera.main.transform.localEulerAngles; //镜头微调 if (gameObject.name == "R69" || gameObject.name == "R70") CameraMgr.Instance.GotoView(cabine.transform, 2, targetRotation, 0); else if (cabine.layer != 15) { var nub = int.Parse(cabine.name.Replace("R", "")); if ((nub >= 5 && nub <= 7) || (nub >= 10 && nub <= 12) || (nub >= 26 && nub <= 32) || (nub >= 40 && nub <= 64) || (nub >= 69 && nub <= 70) || nub == 15) CameraMgr.Instance.GotoView(cabine.transform, 2, targetRotation, 2); else CameraMgr.Instance.GotoView(cabine.transform, 2, targetRotation, 1); } else CameraMgr.Instance.GotoView(cabine.transform.parent, 2, targetRotation, 3); ExtendedFlycam.Inst.CameraRtEnable(); GameManager.Inst.magnifyState = true; }); } /// /// 缩小镜头 /// /// public void Zoomout(GameObject cabine) { ExtendedFlycam.Inst.CameraRtDisable(); GameManager.Inst.magnifyState = false; TransparentGlowManage.Inst.is_magnify = false; Array.ForEach(cabine.GetComponentsInChildren(), (itme) => { itme.hight.SetActive(false); }); GameManager.Inst.nowDeviceID = null; My_magnifyState = false; //ExtendedFlycam.Inst.init_mainCamera_rot(); // 物体被点击 Debug.Log("缩小点击到" + gameObject.name); //Camera.main.transform.DOMove(TransparentGlowManage.Inst.MainCamera_pos, 1f); //Camera.main.transform.DORotateQuaternion(Quaternion.Euler(TransparentGlowManage.Inst.MainCamera_rot), 1f).OnComplete(() => //{ // //更新相机初始旋转角度 // //ExtendedFlycam.Inst.initialRotationEulerAngles = Camera.main.transform.localEulerAngles; // CameraMgr.Instance.ResumeView(); // selected_cabient = null; // ExtendedFlycam.Inst.CameraRtEnable(); //}); GameManager.Inst.editorMenu.gameObject.SetActive(false); ExtendedFlycam.Inst.QieHuan(CabinetUIManager.Instance.current_menu); CameraMgr.Instance.ResumeView(); selected_cabient = null; ExtendedFlycam.Inst.CameraRtEnable(); for (int i = 0; i < PatternChoose.Inst.xianlan.transform.childCount; i++) { PatternChoose.Inst.xianlan.transform.GetChild(i).gameObject.SetActive(false); } } /// /// 展示设备信息 /// public void Device_popup(GameObject cabine) { var _cabine = GameManager.Inst.FindParent(cabine, GameManager.Inst.IsDesiredParent); if (!_cabine || GameManager.Inst.nowCabine != _cabine) return; PatternChoose.Inst.sb_xz_page.SetActive(false); PatternChoose.Inst.sb_bj_page.SetActive(false); PatternChoose.Inst.dk_bj_page.SetActive(false); PatternChoose.Inst.dk_xz_page.SetActive(false); GameManager.Inst.checkDevice(); } /// /// 根据机柜打开摄像机 /// /// public void FindVideo(GameObject cabine) { string l = cabine.GetComponent().deviceList.devicePosition.Split("-")[0].ToUpper(); switch (l) { case "A": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("09"); break; } case "B": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("08"); break; } case "C": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("07"); break; } case "D": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("06"); break; } case "E": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("05"); break; } case "F": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("04"); break; } case "G": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("03"); break; } case "H": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("02"); break; } case "I": { WebInteraction.Inst.isVideoPlay = true; WebInteraction.Inst.OpenVideo("01"); break; } default: break; } } /// /// 插入设备动画 /// public void insertion(Transform t, Vector3 endPos, bool isLocal = true) { Collider collider = t.GetComponent(); Bounds modelBounds = collider.bounds; Vector3 modelSize = modelBounds.size; float modelWidth = modelSize.x; float modelHeight = modelSize.y; float modelDepth = modelSize.z; //endPos = t.localPosition = new Vector3((float)modelWidth / 2, 0, 0); Debug.Log("################\n" + "modelWidth: " + modelWidth + "\nmodelHeight: " + modelHeight + "\nmodelDepth: " + modelDepth); if (isLocal) { t.DOLocalMove(endPos, 1); } else { t.DOMove(endPos, 1); } } /// /// 拔出设备动画 /// public void insert(Transform t, Vector3 endPos, bool isLocal = true) { Collider collider = t.GetComponent(); Bounds modelBounds = collider.bounds; Vector3 modelSize = modelBounds.size; float modelWidth = modelSize.x; float modelHeight = modelSize.y; float modelDepth = modelSize.z; //endPos = t.localPosition = new Vector3((float)modelWidth / 2, 0, 0); Debug.Log("################\n" + "modelWidth: " + modelWidth + "\nmodelHeight: " + modelHeight + "\nmodelDepth: " + modelDepth); if (isLocal) { endPos = t.localPosition = new Vector3((float)modelWidth / 2, 0, 0); t.DOLocalMove(endPos, 1); } else { t.DOMove(endPos, 1); } } }