using DefaultNamespace.ProcessMode;
using DG.Tweening;
using MotionFramework;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HighlightPlus;
using UnityEngine.EventSystems;
public class JunctionBox : MonoBehaviour
{
///
/// 透明盖
///
public Transform TransparentlidObj;
///
/// 端子排上所有封印和螺丝
///
public GameObject[] AllObjects;
///
/// 接线盒滑块
///
public GameObject[] GameObjectSlider;
///
/// 高亮物体
///
//public GameObject[] AllHightObj;
///
/// 接线盒是否盖上
///
public bool iscover;
///
/// 滑块的原始位置
///
private List originalPosition=new List();
///
/// 滑块的原始旋转
///
private Quaternion originalRotation;
bool isanzhaung =false;
///
/// 接线盒上的封印和螺丝
///
public GameObject[] tool;
//public static JunctionBox intance;
//public void Awake()
//{
// intance = this;
//}
void Start()
{
Init();
}
public void Init()
{
for (int i = 0; i < GameObjectSlider.Length; i++)
{
GameObjectSlider[i].GetComponent().enabled = false;
originalPosition.Add(GameObjectSlider[i].transform.localPosition);
//originalRotation = GameObjectSlider[i].transform.localRotation;
}
}
///
/// 是否高亮
///
/// 高亮物体
/// 高亮
/// 是否高亮
//public void HighligtOfObj(string ObjName, HighlightEffect Highlight,bool Ishighlight)
//{
// for (int i = 0; i < AllObjects.Length; i++)
// {
// if (Ishighlight)
// {
// if (AllObjects[i].name.Equals(ObjName))
// {
// Highlight.enabled = false;
// }
// }
// else
// {
// if (AllObjects[i].name.Equals(ObjName))
// {
// Highlight.enabled = true;
// }
// }
// }
//}
void Update()
{
if (EventSystem.current.IsPointerOverGameObject())
return;
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
bool raycast = Physics.Raycast(ray, out hit);
if (raycast)
{
if (iscover)
{ //判断盖子是否打开
switch (hit.collider.gameObject.name)
{
// case "接线盒纵向滑块001":
// hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.06131744f, -0.0075f, 0.0089f), 1f);
// Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
// break;
// case "接线盒纵向滑块002":
// hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.02013969f, -0.0075f, 0.0089f), 1f);
// Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
// break;
// case "接线盒纵向滑块003":
// hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.02001452f, -0.0075f, 0.0089f), 1f);
// Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
// break;
case "接线盒纵向滑块004":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.06075525f, -0.00784f, 0.0089f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒横向上滑块003":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.04339f, 0.0058f, -0.00263f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒纵向滑块003":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.02001452f, -0.0074f, 0.0089f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒横向上滑块001":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.00316f, 0.0058f, -0.00263f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒纵向滑块002":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.02013969f, -0.008f, 0.0089f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒横向上滑块002":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.0372f, 0.0058f, -0.0026f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒纵向滑块001":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.06131744f, -0.0079f, 0.0089f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "三相_有互感器_无光伏_接线盒_A相_横向下滑块_正确":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.0404f, -0.0058f, -0.0026f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "三相_有互感器_无光伏_接线盒_B相_横向下滑块_正确":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(0f, -0.0058f, -0.0026f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "三相_有互感器_无光伏_接线盒_C相_横向下滑块_正确":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.0408f, -0.0058f, -0.0026f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
}
}
if (AreAllTool())
{
switch (hit.collider.gameObject.name)
{
case "接线盒纵向滑块001":
hit.collider.gameObject.transform.DOLocalMove(originalPosition[0], 1f);
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒纵向滑块002":
hit.collider.gameObject.transform.DOLocalMove(originalPosition[1], 1f);
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒纵向滑块003":
hit.collider.gameObject.transform.DOLocalMove(originalPosition[2], 1f);
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
case "接线盒纵向滑块004":
hit.collider.gameObject.transform.DOLocalMove(originalPosition[3], 1f);
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name);
break;
}
}
}
}
//
if (AreAllObjectsHidden())
{
TransparentlidObj.transform.DOLocalMove(new Vector3(0, -0.0914f, 0), 2f);
iscover = true;
//isanzhaung = true;
for (int i = 0; i < GameObjectSlider.Length; i++)
{
GameObjectSlider[i].GetComponent().enabled = true;
}
}
}
public bool AreAllObjectsHidden()
{
// 检查每个对象的激活状态
foreach (GameObject obj in AllObjects)
{
if (obj.activeInHierarchy) // 使用 activeInHierarchy 如果你想检查对象是否在其父级结构中被激活
{
return false; // 如果找到任何一个激活的对象,返回false
}
}
return true; // 如果所有对象都未激活,返回true
}
//判断新集中器上的螺丝和封印是否全部显示
public bool AreAllTool()
{
// 检查每个对象的激活状态
foreach (GameObject obj in tool)
{
if (obj.activeInHierarchy) // 使用 activeInHierarchy 如果你想检查对象是否在其父级结构中被激活
{
TransparentlidObj.gameObject.GetComponent().enabled = true;
return true; // 如果找到任何一个激活的对象,返回
}
}
return false; // 如果所有对象都未激活,返回false
}
}