using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
///
/// 无人机视角显示
///
public class DroneViewDisplay : MonoSingleton
{
public Transform uiParent;
#region UI
///
/// WRJUI集合
///
public static List radioAngleViews = new List();
///
/// 所有无人机RenderTexture集合
///
public static List renderTextures = new List();
///
/// UIPrefab
///
[Header("UIPrefab")]
public GameObject prefabRadioAngleView;
///
/// 放大显示
///
[Header("放大显示")]
public Transform radioAngleViewMax;
///
/// 放大显示无人机名称
///
[Header("放大显示无人机名称")]
public Text textNmme;
///
/// 放大显示关闭按钮
///
[Header("放大显示关闭按钮")]
public Button btnClose;
///
/// 放大显示视角显示RawImage
///
[Header("无线电探测放大显示视角显示RawImage")]
public RawImage rawShow;
#endregion
// Start is called before the first frame update
void Start()
{
renderTextures.Clear();
radioAngleViews.Clear();
transform.localScale = GlobalFlag.blueOrRed == 0 ? Vector3.one : Vector3.zero;
btnClose.onClick.AddListener(() => { radioAngleViewMax.localScale = Vector3.zero; });
}
///
/// 显示UI
///
/// 无人机脚本
/// 是否显示
public void CreateUI(UnmannedAerialVehicleManage unmannedAerialVehicleManage, bool isShow)
{
if (unmannedAerialVehicleManage.equipmentCommon.deviceID.Length < 10) return;
RadioAngleView radioAngleView = radioAngleViews.Find(x => x.deviceID == unmannedAerialVehicleManage.equipmentCommon.deviceID);
if (radioAngleView)
{
radioAngleView.transform.SetAsFirstSibling(); // 移到父物体的第一个位置
radioAngleView.transform.localScale = Vector3.one;
textNmme.text = unmannedAerialVehicleManage.transform.name;
rawShow.texture = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ?
unmannedAerialVehicleManage.dzWRJCamera.targetTexture : unmannedAerialVehicleManage.gxWRJCamera.targetTexture;
}
else
{
if (unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 || unmannedAerialVehicleManage.wrjModel == WRJModel.光学无人机)
{
GameObject wrj = Instantiate(prefabRadioAngleView, uiParent);
wrj.transform.localScale = Vector3.zero;
wrj.name = unmannedAerialVehicleManage.transform.name;
wrj.transform.SetAsLastSibling();// 移到父物体的最后一个位置
RadioAngleView radioAngleViewMain = wrj.GetComponent();
if (radioAngleViewMain)
{
radioAngleViewMain.deviceID = unmannedAerialVehicleManage.equipmentCommon.deviceID;
radioAngleViewMain.textNmme.text = unmannedAerialVehicleManage.transform.name;
radioAngleViewMain.typeWRJ = unmannedAerialVehicleManage.wrjModel;
Mask mask = wrj.transform.GetComponentInChildren();
if (mask)
mask.enabled = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? true : false;
// 创建 RenderTexture
RenderTexture renderTexture = new RenderTexture(500, 500, 0);
renderTexture.name = unmannedAerialVehicleManage.equipmentCommon.deviceID;
unmannedAerialVehicleManage.dzWRJCamera.targetTexture = renderTexture;
unmannedAerialVehicleManage.gxWRJCamera.targetTexture = renderTexture;
if (unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机)
{
unmannedAerialVehicleManage.dzWRJCamera.gameObject.SetActive(true);
}
else
{
unmannedAerialVehicleManage.gxWRJCamera.gameObject.SetActive(true);
}
radioAngleViewMain.rawShow.texture = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ?
unmannedAerialVehicleManage.dzWRJCamera.targetTexture : unmannedAerialVehicleManage.gxWRJCamera.targetTexture;
renderTextures.Add(renderTexture);
radioAngleViews.Add(radioAngleViewMain);
}
}
}
}
///
/// 其他非无人机设备生成RenderTexture
///
///
///
///
public void CreateUI(string deviceID, Camera camera, RawImage rawImage)
{
if (deviceID.Length < 10) return;
var v = renderTextures.Find(x => (x!=null&&x.name == deviceID));
if (v != null) return;
RenderTexture renderTexture = new RenderTexture(500, 500, 0);
renderTexture.name = deviceID;
camera.targetTexture = renderTexture;
rawImage.texture = renderTexture;
renderTextures.Add(renderTexture);
}
///
/// 删除无人机UI
///
///
public void DistroyUI(string deviceID)
{
if (deviceID.Length < 10) return;
RadioAngleView radioAngleView = radioAngleViews.Find(x => x != null && x.deviceID == deviceID);
if (radioAngleView)
{
Destroy(radioAngleView.gameObject);
for (int i = 0; i < radioAngleViews.Count; i++)
{
if (radioAngleViews[i] == null)
{
radioAngleViews.RemoveAt(i);
}
}
}
RenderTexture renderTexture = renderTextures.Find(x => x != null && x.name.Contains(deviceID));
if (renderTexture)
{
Debug.Log("删除了" + renderTexture.name);
Destroy(renderTexture);
for (int i = 0; i < renderTextures.Count; i++)
{
if (renderTextures[i] == null)
{
renderTextures.RemoveAt(i);
}
}
}
}
///
/// 根据deviceID返回RenderTexture
///
///
///
public RenderTexture renderTextureTo(string deviceID)
{
RenderTexture radioAngleView = null;
if (renderTextures.Count == 0) return null;
for (int i = 0; i < renderTextures.Count; i++)
{
if (renderTextures[i] != null && renderTextures[i].name == deviceID)
{
radioAngleView = renderTextures[i];
return radioAngleView;
}
}
return radioAngleView;
}
///
/// 打开放大UI
///
///
/// ();
if (mask)
mask.enabled = wRJModel == WRJModel.电子侦察无人机 ? true : false;
}
void OnDestroy()
{
for (int i = 0; i < renderTextures.Count; i++)
{
Destroy((RenderTexture)renderTextures[i]);
}
}
}