using HighlightingSystem; using System.Collections; using System.Collections.Generic; using UnityEngine; using ZXK.UTility; using DG.Tweening; /******************************************************************************* *Create By CG *Function 每个端子控制 *******************************************************************************/ namespace ZXK.BYSS { public class TerminalCtrl : MonoBehaviour { private TerminalModel _curTerminalData = null; public TerminalModel _CurTerminalData { get => _curTerminalData; } [MyReadOnly] public int _ConnectErrorNumber = 0; private float _centerColAdjust = 0.0f; private float _sizeColAdjust = 0.0f; private BoxCollider _col; //private Highlighter _light; private OutLineRender _light; /// /// 显示线段闪光 /// public void ShowHighlightOutLine() { // _light.OutLineStrength = 2; _light.OutLineColor = Color.blue; _light.enabled = true; _light.HightOutLine(); } /// /// 取消线段闪光 /// public void HideHighlightOutLine() { //WDebug.Log("!!!!!!!TerminalCtrl"+transform.name+"!!!!!!!!!!!!!"); _light.enabled = false; _light.OutLineColor = Color.blue; // _light.enabled = false; _light.NoHightOutLine(); } private void Awake() { if (gameObject.GetComponent()) { _light = gameObject.GetComponent(); _light.OutLineColor = Color.blue; _light.OutLineStrength = 0; _light.enabled = true; } else { gameObject.AddComponent(); _light = gameObject.GetComponent(); _light.OutLineColor = Color.blue; _light.OutLineStrength = 0; _light.enabled = true; } } public void Init(TerminalModel data) { if (_curTerminalData != null) { _curTerminalData._LinesID.Add(data._LinesID[0]); } else { _curTerminalData = data; } gameObject.layer = LayerMask.NameToLayer(ConstCtrl.LAYER_TERMINAL); if (!gameObject.TryGetComponent(out _col)) { if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { gameObject.AddComponent(); } else { _col = gameObject.AddComponent(); } } TriAreaChangeByChaTouNumber(); } /// /// 触发区域由于插头数量而变化 /// private void TriAreaChangeByChaTouNumber() { if (AppManagement.Instance._CurType == EnumCtrl.Type.XHBY) { if (_curTerminalData._CtrlBoard.Equals("信号转接板")) { _centerColAdjust = 0.018f; _sizeColAdjust = 0.038f; } else { _centerColAdjust = 0.025f; _sizeColAdjust = 0.07f; } } else if (AppManagement.Instance._CurType == EnumCtrl.Type.QDCY) { if (_curTerminalData._CtrlBoard.Equals("信号转接板")) { _centerColAdjust = 0.05f; _sizeColAdjust = 0.095f; } else { _centerColAdjust = 0.038f; _sizeColAdjust = 0.075f; } } else if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { //接线方式不同,不需要 } } /// /// 接入一个插头 /// /// public void SetChaTouPos(Transform chatou) { if (transform.childCount > 0) {//已经有线插入 Transform lastTran = transform.GetChild(transform.childCount - 1); chatou.SetParent(lastTran); chatou.localPosition = Vector3.right * 0.029f;//lastTran.localPosition + chatou.localRotation = Quaternion.Euler(Vector3.right * -180);//lastTran.localRotation.eulerAngles + chatou.SetParent(transform); } else { chatou.SetParent(transform); chatou.localPosition = _CurTerminalData._ChaTouPos; chatou.localRotation = Quaternion.Euler(_CurTerminalData._ChaTouRot); } ChaTouNumber(true); InsertLightState(true); } /// /// 碰撞体加长 /// /// public void ChaTouNumber(bool addChaTou) { if (_col) { if (addChaTou) { _col.center = new Vector3(_col.center.x, _col.center.y, _col.center.z + _centerColAdjust); _col.size = new Vector3(_col.size.x, _col.size.y, _col.size.z + _sizeColAdjust); } else { _col.center = new Vector3(_col.center.x, _col.center.y, _col.center.z - _centerColAdjust); _col.size = new Vector3(_col.size.x, _col.size.y, _col.size.z - _sizeColAdjust); } } } /// /// 直插式接入端子,例如:材料分拣模块 /// public void StraightSetChaTouPos() { if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { float posX = transform.localPosition.x; if (transform.name.Contains("Q0.") || transform.name.Contains("Q1.")) { transform.DOLocalMoveX(posX + 0.05f, 0.5f).OnComplete(() => { InsertLightState(true); }); } else { transform.DOLocalMoveX(posX + 0.01f, 0.5f).OnComplete(() => { InsertLightState(true); }); } } //搬运输送 else if (AppManagement.Instance._CurType == EnumCtrl.Type.BYSS) { float posZ = transform.localPosition.z; //标签 if (transform.name.Contains("-BiaoQian")) { //标签不做动画 } else { //线段做动画 //移动1点 var v = GameObject.Find(transform.name + "_Pos1").gameObject; //移动2点 var v2 = GameObject.Find(transform.name + "_Pos2").gameObject; transform.DOLocalMove(v.transform.localPosition, 0.2f).OnComplete(() => { transform.DOLocalMove(v2.transform.localPosition, 0.2f).OnComplete(() => { InsertLightState(true); }); }); } } } /// /// 立刻执行 /// public void StraightSetChaTouPos_Rightaway() { if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { float posX = transform.localPosition.x; if (transform.name.Contains("Q0.") || transform.name.Contains("Q1.")) { transform.DOLocalMoveX(posX + 0.05f, 0.5f).OnComplete(() => { InsertLightState(true); }); } else { transform.DOLocalMoveX(posX + 0.01f, 0.5f).OnComplete(() => { InsertLightState(true); }); } } //搬运输送 else if (AppManagement.Instance._CurType == EnumCtrl.Type.BYSS) { float posZ = transform.localPosition.z; //标签 if (transform.name.Contains("-BiaoQian")) { //标签不做动画 } else { //线段做动画 //移动1点 var v = GameObject.Find(transform.name + "_Pos1").gameObject; //移动2点 var v2 = GameObject.Find(transform.name + "_Pos2").gameObject; transform.DOLocalMove(v.transform.localPosition, 0f).OnComplete(() => { transform.DOLocalMove(v2.transform.localPosition,0f).OnComplete(() => { InsertLightState(true); }); }); } } } /// /// 撤销直插式接入端子 /// public void RecallStraightChaTouPos() { //材料分拣特殊模式设置 if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { float posX = transform.localPosition.x; if (transform.name.Contains("Q0.") || transform.name.Contains("Q1.")) { //transform.localPosition = new Vector3(posX - 0.01f, transform.localPosition.y, transform.localPosition.z); transform.DOLocalMoveX(posX - 0.05f, 0.5f); } else { //transform.localPosition = new Vector3(posX - 0.01f, transform.localPosition.y, transform.localPosition.z); transform.DOLocalMoveX(posX - 0.01f, 0.5f); } } } /// /// 端子泛光变化 /// /// 连接是否正确 public void InsertLightState(bool right) { _light.OutLineColor = Color.blue; _light.enabled = true; _light.OutLineStrength = 2; int time = 0; DOTween.To(() => time, t => t = time, 5, 0.5f).OnComplete(() => { _light.OutLineStrength = 0; _light.enabled = false; }); } } }