U3D_TobaccoWarehouseISMDTSy.../Assets/Scripts/YL/Palletizertent.cs

370 lines
13 KiB
C#

using DefaultNamespace;
using DG.Tweening;
using HighlightPlus;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
using static InterfaceManager;
public class Palletizertent : MonoBehaviour
{
/// <summary>
/// 设备id
/// </summary>
public string ID;
/// <summary>
/// 速度
/// </summary>
public float Speed = 3.5f;
[Header("码垛机手臂")]
public GameObject Armobj;
[Header("需要判断位置的箱子")]
public Transform Haveabox;
/// <summary>
/// 初始化判断
/// </summary>
private bool ispcon = false;
/// <summary>
/// 普通实箱
/// </summary>
public Material Commonfruitbox;
/// <summary>
/// 普通空箱
/// </summary>
public Material Normalairbox;
/// <summary>
/// 特殊实箱
/// </summary>
public Material Specialkernelbox;
/// <summary>
/// 特殊空箱
/// </summary>
public Material Specialbox;
/// <summary>
/// 一个箱子
/// </summary>
public GameObject Boxgame;
/// <summary>
/// 展示对应的位置
/// </summary>
public Transform Points;
public void Stacking(Dpmequipment cmequipment)
{
if (cmequipment.FaultFree == "False")
{
HighlightEffect highlightEffect = transform.GetComponent<HighlightEffect>();
highlightEffect.highlighted = true;
}
else if(cmequipment.FaultFree == "True")
{
HighlightEffect highlightEffect = transform.GetComponent<HighlightEffect>();
highlightEffect.highlighted = false;
}
//if (ispcon)
//{
// if (cmequipment.boxesNumber == "1" && cmequipment.UpperInPlace == "True")
// {
// //Suitcase();
// }
// else if (cmequipment.boxesNumber == "0" && cmequipment.DownInPlace == "True")
// {
// Stow();
// }
// else if (cmequipment.boxesNumber == "0" && cmequipment.MiddleInPlace == "True")
// {
// Centreposition();
// }
// else
// {
// Debug.Log("没有条件");
// }
//}
//if (!ispcon && cmequipment.boxesNumber == "1")
//{
// if (!ispcon && ID == "2")
// {
// Boxinit2(cmequipment);
// ispcon = true;
// }
// else if (!ispcon)
// {
// Boxinit(cmequipment);
// ispcon = true;
// }
//}
//ispcon = true;
}
/// <summary>
/// 码垛机初始化
/// </summary>
public void Boxinit(Dpmequipment dpmequipment)
{
if (dpmequipment.boxesNumber == "1")
{
Armobj.transform.DOMoveY(Armobj.transform.position.y + 0.2f, 0.2f).SetEase(Ease.InOutQuad).OnComplete(() =>
{
GameObject box = Instantiate(Boxgame, Points.transform);
//Debug.Log("初始化码垛机手臂的位置");
box.gameObject.transform.SetParent(Armobj.transform);
MqttManager.Instance.firstbox.Add(box);
if (dpmequipment.boxesNumber == "0" && dpmequipment.DownInPlace == "True")
{
Stow();
}
else if (dpmequipment.boxesNumber == "0" && dpmequipment.MiddleInPlace == "True")
{
Centreposition();
}
else
{
//Debug.Log("没有条件");
}
});
}
}
public void Boxinit2(Dpmequipment dpmequipment)
{
if (dpmequipment.boxesNumber == "1")
{
Armobj.transform.DOMoveY(Armobj.transform.position.y + 0.2f, 0.2f).SetEase(Ease.InOutQuad).OnComplete(() =>
{
GameObject box = Instantiate(Boxgame, Points.transform);
Renderer renderer = box.GetComponent<Renderer>();
if (renderer)
{
renderer.material = Specialkernelbox;
}
//Debug.Log("初始化码垛机手臂的位置");
box.gameObject.transform.SetParent(Armobj.transform);
MqttManager.Instance.firstbox.Add(box);
if (dpmequipment.boxesNumber == "0" && dpmequipment.DownInPlace == "True")
{
Stow();
}
else if (dpmequipment.boxesNumber == "0" && dpmequipment.MiddleInPlace == "True")
{
Centreposition();
}
else
{
//Debug.Log("没有条件");
}
});
}
}
private void Init(Dpmequipment dpmequipment)
{
string url = Tasknumber + dpmequipment.TaskNumber;
StartCoroutine(Getstring(url, (data) =>
{
Initdata initdata = JsonUtility.FromJson<Initdata>(data);
if (initdata != null && Boxgame)
{
//Debug.Log("码垛机初始化" + data);
GameObject box = Instantiate(Boxgame, Points.transform);
//Debug.Log("生成对应位置");
Boxtasknumber boxtasknumber = box.GetComponent<Boxtasknumber>();
boxtasknumber.ID = initdata.result[0].transferId;
switch (initdata.result[0].palletType)
{
case "QBox":
if (initdata.result[0].itemType == "EmptyBox")
{
Renderer renderer = box.GetComponent<Renderer>();
//Renderer renderer1 = box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer != null)
{
renderer.material = Normalairbox;
}
//if (renderer1 != null)
//{
// renderer1.material = Normalairbox;
//}
}
else
{
Renderer renderer2 = box.GetComponent<Renderer>();
// Renderer renderer3 = box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer2 != null)
{
renderer2.material = Commonfruitbox;
}
//if (renderer3 != null)
//{
// renderer3.material = Commonfruitbox;
//}
}
break;
case "Box":
if (initdata.result[0].itemType == "EmptyBox")
{
Renderer renderer = box.GetComponent<Renderer>();
//Renderer renderer1 = box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer != null)
{
renderer.material = Specialbox;
}
//if (renderer1 != null)
//{
// renderer1.material = Specialbox;
//}
}
else
{
Renderer renderer2 = box.GetComponent<Renderer>();
//Renderer renderer3 = box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer2 != null)
{
renderer2.material = Specialkernelbox;
}
//if (renderer3 != null)
//{
// renderer3.material = Specialkernelbox;
//}
}
break;
default:
break;
}
if (dpmequipment.boxesNumber == "1")
{
Armobj.transform.DOMoveY(Armobj.transform.position.y + 0.2f, 0.2f).SetEase(Ease.InOutQuad).OnComplete(() =>
{
//Debug.Log("初始化码垛机手臂的位置");
box.gameObject.transform.SetParent(Armobj.transform);
MqttManager.Instance.firstbox.Add(box);
});
}
if (dpmequipment.boxesNumber == "0" && dpmequipment.DownInPlace == "True")
{
Stow();
}
else if (dpmequipment.boxesNumber == "0" && dpmequipment.MiddleInPlace == "True")
{
Centreposition();
}
else
{
//Debug.Log("没有条件");
}
}
}));
}
/// <summary>
/// 中到位操作
/// </summary>
private void Centreposition()
{
//Debug.Log("中到位是否满足条件");
if (Armobj.transform.childCount > 0 && Haveabox.childCount > 0)
{
//Debug.Log("执行中到位");
GameObject box = Armobj.transform.GetChild(0).gameObject;
GameObject box2 = Haveabox.transform.GetChild(0).gameObject;
if (box2 != null)
{
if (box2.GetComponent<Boxtasknumber>() != null)
{
Destroy(box2.GetComponent<Boxtasknumber>());
}
if (box2.GetComponent<BoxCollider>() != null)
{
Destroy(box2.GetComponent<BoxCollider>());
}
}
if (box != null && box2)
{
box.transform.SetParent(null);
box2.transform.SetParent(null);
Vector3 transform = box2.transform.position;
box2.transform.position = box.transform.position;
box.transform.position = transform;
box2.transform.SetParent(box.transform);
if (box.GetComponent<BoxCollider>() != null)
{
BoxCollider box3 = box.GetComponent<BoxCollider>();
box3.center = new Vector3(0, 0, 0);
//Debug.Log("把碰撞体给到箱子中心");
box.transform.SetParent(Haveabox.transform);
Armobj.transform.DOMoveY(Armobj.transform.position.y - 0.23f, 0.2f).SetEase(Ease.InOutQuad);
//Debug.Log("执行中到位完成");
}
}
}
}
/// <summary>
/// 提箱操作
/// </summary>
/// <param name="cmequipment"></param>
public void Suitcase()
{
if (Haveabox.childCount > 0)
{
if (Haveabox.transform.GetChild(0).childCount > 0 && Armobj.transform.childCount == 0)
{
GameObject box = Haveabox.GetChild(0).GetChild(0).gameObject;
if (box != null)
{
box.transform.SetParent(null);
Armobj.transform.DOMoveY(Armobj.transform.position.y + 0.2f, 0.2f).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Armobj.transform);
//if (box.transform.GetComponent<Boxtasknumber>() == null)
//{
// box.AddComponent<Boxtasknumber>();
// box.AddComponent<BoxCollider>();
// box.GetComponent<Boxtasknumber>().ID = task;
//}
// Debug.Log("两个箱子提箱");
});
}
}
else if (Haveabox.childCount == 1)
{
GameObject box = Haveabox.transform.GetChild(0).gameObject;
if (box != null)
{
Armobj.transform.DOMoveY(Armobj.transform.position.y - 1.03f, 0.5f).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Armobj.transform);
// Debug.Log("一个箱子提箱");
Armobj.transform.DOMoveY(Armobj.transform.position.y + 1.23f, 0.6f).SetEase(Ease.InOutQuad);
});
}
}
else
{
//Debug.Log("提箱子啥也不是");
}
}
}
/// <summary>
/// 放下箱子操作
/// </summary>
public void Stow()
{
if (Armobj.transform.childCount > 0 && Haveabox.childCount == 0)
{
Armobj.transform.DOMoveY(Armobj.transform.position.y - 1.23f, 0.5f).SetEase(Ease.InOutQuad).OnComplete(() =>
{
if (Armobj.transform.childCount > 0)
{
GameObject box = Armobj.transform.GetChild(0).gameObject;
box.transform.SetParent(Haveabox);
Armobj.transform.DOMoveY(Armobj.transform.position.y + 1.03f, 0.4f).SetEase(Ease.InOutQuad);
//Debug.Log("执行下到位");
}
});
}
else
{
//Debug.Log("放箱子啥也不是");
}
}
}