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.
120 lines
3.7 KiB
120 lines
3.7 KiB
4 years ago
|
using AX.MessageSystem;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
/// <summary>
|
||
|
/// 克隆游戏对象信息基类
|
||
|
/// </summary>
|
||
|
public class CloneGameObjInfo : BaseGameObjInfo
|
||
|
{
|
||
|
public string buildNum;//楼号
|
||
|
public int floorNum;//层号
|
||
|
public int interlayerNum;//夹层号,0表示不是夹层,1表示第一个夹层
|
||
|
public int Layer;
|
||
|
/// <summary>
|
||
|
/// 显示or隐藏
|
||
|
/// </summary>
|
||
|
public bool ShoworHidden;
|
||
|
public virtual void Awake()
|
||
|
{
|
||
|
ShoworHidden = true;
|
||
|
Layer = gameObject.layer;
|
||
|
}
|
||
|
|
||
|
public virtual void Start()
|
||
|
{
|
||
|
if (gameObjType != CloneObjType.StaticGameObject)
|
||
|
{//室内地面、消火栓等显隐由父对象统一控制,在这不用注册事件
|
||
|
UpdateEnabled(GlobalVariable.CurrentFloor, this);
|
||
|
MessageDispatcher.AddListener("FloorNumChanged", setFloorEnabled);
|
||
|
MessageDispatcher.AddListener("OBJ_DODISSELECT", EscCancelSelected);
|
||
|
}
|
||
|
}
|
||
|
public virtual void OnDestroy()
|
||
|
{
|
||
|
if (gameObjType != CloneObjType.StaticGameObject)
|
||
|
{
|
||
|
MessageDispatcher.RemoveListener("FloorNumChanged", setFloorEnabled);
|
||
|
MessageDispatcher.RemoveListener("OBJ_DODISSELECT", EscCancelSelected);
|
||
|
}
|
||
|
}
|
||
|
public virtual string GetObjectName()
|
||
|
{
|
||
|
return CloneObjName.Instance.GetCloneNameByType(gameObjType);
|
||
|
}
|
||
|
|
||
|
private void setFloorEnabled(IMessage msg)
|
||
|
{
|
||
|
if (SelectedObjs.selectedObj == gameObject || SelectedObjs.selectedCharacters.Contains(gameObject))
|
||
|
return;
|
||
|
UpdateEnabled(GlobalVariable.CurrentFloor, this);
|
||
|
}
|
||
|
private void EscCancelSelected(IMessage obj)
|
||
|
{
|
||
|
if (GameObjID == (long)obj.Sender)
|
||
|
{
|
||
|
UpdateEnabled(GlobalVariable.CurrentFloor, this);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void UpdateFloorEnabled(FloorData data)
|
||
|
{
|
||
|
UpdateEnabled(data, this);
|
||
|
}
|
||
|
private static void UpdateEnabled(FloorData data, CloneGameObjInfo obj)
|
||
|
{
|
||
|
if (string.IsNullOrEmpty(obj.buildNum))//室外物体不隐藏
|
||
|
return;
|
||
|
//if (obj.floorNum == 0)
|
||
|
//{
|
||
|
// //if (!data.isOn)
|
||
|
// //{
|
||
|
// // obj.ShoworHidden = true;
|
||
|
// //}
|
||
|
// //else
|
||
|
// //{
|
||
|
// // if (data.floorNum > obj.floorNum)
|
||
|
// // {
|
||
|
// obj.ShoworHidden = true;
|
||
|
// // }
|
||
|
// // else if (data.floorNum < obj.floorNum)
|
||
|
// // {
|
||
|
// // obj.ShoworHidden = false;
|
||
|
// // }
|
||
|
// //}
|
||
|
//}
|
||
|
if (data.buildNum == obj.buildNum)
|
||
|
{
|
||
|
if (!data.isOn)
|
||
|
{
|
||
|
obj.ShoworHidden = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (data.floorNum > obj.floorNum)
|
||
|
{
|
||
|
obj.ShoworHidden = true;
|
||
|
}
|
||
|
else if (data.floorNum < obj.floorNum)
|
||
|
{
|
||
|
obj.ShoworHidden = false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (data.interlayerNum >= obj.interlayerNum)
|
||
|
{
|
||
|
obj.ShoworHidden = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
obj.ShoworHidden = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
TransformHelper.SetRenderer(obj.gameObject, obj.ShoworHidden);
|
||
|
//bool myactiveInHierarchy = obj.ShoworHidden ? true : false;//如果为隐藏层则隐藏名称 否则显示
|
||
|
//MessageDispatcher.SendMessage(obj.gameObject.name, "CONTROL_HIDE_SHOW_HEAD_NAME", myactiveInHierarchy);
|
||
|
}
|
||
|
}
|