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
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; |
|
}
|
|
|