网演高层钦州
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

95 lines
3.1 KiB

using AX.MessageSystem;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FireManMapIcon : MonoBehaviour
{
private Camera miniCam;
private bool fourthGTransfer = false; //是否开启4G图传面板
public bool updateMap = false; //是否在图传列表上
private CloneGameObjInfo info;
private MapIconPair pair;
void Start()
{
miniCam = GameObject.Find("4GCamera").GetComponent<Camera>();
info = GetComponent<CloneGameObjInfo>();
pair = new MapIconPair();
}
void OnEnable()
{
MessageDispatcher.AddListener("OpenFourthG", FourthGInit);
MessageDispatcher.AddListener("4GPersonSelected", FourthGMapSelected);
}
void OnDestroy()
{
MessageDispatcher.RemoveListener("OpenFourthG", FourthGInit);
MessageDispatcher.RemoveListener("4GPersonSelected", FourthGMapSelected);
}
void FourthGInit(IMessage obj)
{
var isOn = (bool)obj.Data;
fourthGTransfer = isOn;
}
void UpdateMap()
{
Vector3 position = transform.position;
Vector3 miniCamPosition = miniCam.transform.position;
Vector3 screenPosition = miniCam.WorldToScreenPoint(position);
Vector3 miniCamScreenPosition = miniCam.WorldToScreenPoint(miniCamPosition);
Vector3 offset = new Vector3(screenPosition.x - miniCamScreenPosition.x, screenPosition.y - miniCamScreenPosition.y, 0);
float sizeW = miniCam.pixelWidth;
float sizeH = miniCam.pixelHeight;
float x = offset.x / sizeW;
float y = offset.y / sizeH;
float rectx = x * 755;
float recty = y * 500;
MapIconPair pair = new MapIconPair
{
gameObjID = GetComponent<CloneGameObjInfo>().gameObjID, //从人物身上获取UserID
rectX = rectx,
rectY = recty
};
//FIXME: 这里不需时刻更新位置,仅当在位置有所变化的情况下更新
if (this.pair.gameObjID != pair.gameObjID ||
this.pair.rectX != pair.rectX ||
this.pair.rectY != pair.rectY)
{
this.pair = pair;
MessageDispatcher.SendMessage("4GIconUpdate", pair);
}
}
// Update is called once per frame
void Update()
{
//在图传列表,并且不在四分屏模式下,则实时更新图标位置
if (/*fourthGTransfer == true &&*/ updateMap == true && QuadrupleMode.quadingMode == false)
{
UpdateMap();
}
}
/// <summary>
/// 此消防员在4G图传中被选中时,地图摄像机移动到该消防员正上方
/// </summary>
/// <param name="obj"></param>
void FourthGMapSelected(IMessage obj)
{
var pair = (MapSelectedPair)obj.Data;
if (pair.gameObjID == GetComponent<CloneGameObjInfo>().gameObjID && pair.isOn == true)
{
miniCam.GetComponent<FourthGCamCtrl>().SetTarget(transform);
}
}
}
/// <summary>
/// 更新4G点位位置的传送信息对
/// </summary>
public class MapIconPair
{
public long gameObjID;
public float rectX;
public float rectY;
}