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.
119 lines
3.7 KiB
119 lines
3.7 KiB
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); |
|
} |
|
}
|
|
|