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.
77 lines
1.8 KiB
77 lines
1.8 KiB
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using AX.MessageSystem; |
|
using System; |
|
|
|
/// <summary> |
|
/// 战术模型选中处理 |
|
/// </summary> |
|
public class ObjSelected : MonoBehaviour { |
|
|
|
public bool selected; |
|
|
|
// Use this for initialization |
|
void Start () { |
|
MessageDispatcher.AddListener("RADIOSELECT", RadioSelected); |
|
MessageDispatcher.AddListener("CANCEL_RADIOSELECT", CancelRadioSelected); |
|
} |
|
|
|
private void RadioSelected(IMessage obj) |
|
{ |
|
var selectObjchild = (GameObject)obj.Data; |
|
|
|
if (selectObjchild.transform.parent.gameObject == gameObject) |
|
{ |
|
DoSelect(gameObject); |
|
} |
|
} |
|
|
|
private void DoSelect(GameObject obj) |
|
{ |
|
selected = true; |
|
SelectedObjs.selectedObj = obj; |
|
|
|
var layer = LayerMask.NameToLayer("ContourProfile"); |
|
SetLayerRecursively(obj, layer); |
|
} |
|
|
|
private void SetLayerRecursively(GameObject obj, int newLayer) |
|
{ |
|
obj.layer = newLayer; |
|
foreach (Transform child in obj.transform) |
|
{ |
|
SetLayerRecursively(child.gameObject, newLayer); |
|
} |
|
} |
|
|
|
private void CancelRadioSelected(IMessage obj) |
|
{ |
|
var selectedObj = (GameObject)obj.Data; |
|
|
|
if (selectedObj == gameObject) |
|
{ |
|
DoDisSelect(gameObject); |
|
} |
|
} |
|
|
|
private void DoDisSelect(GameObject obj) |
|
{ |
|
selected = false; |
|
SelectedObjs.selectedObj = null; |
|
|
|
var layer = LayerMask.NameToLayer("Default"); |
|
SetLayerRecursively(obj, layer); |
|
} |
|
|
|
// Update is called once per frame |
|
void Update () { |
|
|
|
} |
|
|
|
private void OnDestroy() |
|
{ |
|
MessageDispatcher.RemoveListener("RADIOSELECT", RadioSelected); |
|
MessageDispatcher.RemoveListener("CANCEL_RADIOSELECT", CancelRadioSelected); |
|
} |
|
}
|
|
|