天津23维预案
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.

78 lines
1.8 KiB

3 years ago
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);
}
}