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.
151 lines
4.5 KiB
151 lines
4.5 KiB
using AX.MessageSystem; |
|
using System; |
|
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using UnityEngine.EventSystems; |
|
|
|
//Author:ZCG |
|
//CreatTime:12/15/2017 |
|
/// <summary> |
|
/// ÉèÖÃÇøÓò |
|
/// </summary> |
|
public class SetArea : MonoBehaviour |
|
{ |
|
public float High { get; private set; } |
|
public string Name { get; private set; } |
|
public Color Color { get; private set; } |
|
private float initHigh; |
|
private string initName; |
|
private Color initColor; |
|
|
|
private Vector3 pos; |
|
private MeshRenderer render; |
|
private TextMesh text; |
|
private DateTime t1; |
|
private DateTime t2; |
|
private void Awake() |
|
{ |
|
text = transform.Find("info").Find("Name").GetComponent<TextMesh>(); |
|
render = GetComponent<MeshRenderer>(); |
|
High = 0; |
|
Name = text.text; |
|
Color = render.material.color; |
|
} |
|
private void Start() |
|
{ |
|
MessageDispatcher.AddListener("ReplayEvent", ReplayAreaChange); |
|
} |
|
private void OnDestroy() |
|
{ |
|
MessageDispatcher.RemoveListener("ReplayEvent", ReplayAreaChange); |
|
} |
|
private void AddRecordArea() |
|
{ |
|
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal) |
|
{ |
|
var eventData = new EventData(); |
|
eventData.time = RecordManager.Instance.RecordTimer; |
|
eventData.cloneObjType = CloneObjType.SetArea; |
|
eventData.eventType = RecordEventType.SetAreaAttribute; |
|
var data = new RecordSetArea(); |
|
SetBaseData(data); |
|
SetSetAreaData(data); |
|
string json = JsonUtility.ToJson(data); |
|
eventData.json = json; |
|
RecordManager.Instance.jsonData.eventDataList.Add(eventData); |
|
} |
|
} |
|
private void ReplayAreaChange(IMessage obj) |
|
{ |
|
var eventData = (EventData)obj.Data; |
|
if (eventData.cloneObjType == CloneObjType.SetArea && eventData.eventType == RecordEventType.SetAreaAttribute) |
|
{ |
|
var jsonData = JsonUtility.FromJson<RecordSetArea>(eventData.json); |
|
if (jsonData.objectName == gameObject.name) |
|
{ |
|
SetColor(jsonData.color); |
|
SetHigh(jsonData.height); |
|
SetName(jsonData.areName); |
|
} |
|
} |
|
} |
|
|
|
private void SetBaseData(RecordSetArea data) |
|
{ |
|
var msg = gameObject.GetComponent<CloneGameObjInfo>(); |
|
data.gameObjType = msg.gameObjType; |
|
data.objectName = gameObject.gameObject.name; |
|
data.buildNum = msg.buildNum; |
|
data.floorNum = msg.floorNum; |
|
data.interlayerNum = msg.interlayerNum; |
|
data.myTransform.setMyPosition(transform.localPosition); |
|
data.myTransform.setMyRotation(transform.localRotation); |
|
data.myTransform.setMyScale(transform.localScale); |
|
data.isActive = gameObject.activeSelf; |
|
if (gameObject.GetComponent<ObjSelectCtrl>()) |
|
{ |
|
data.IsSelect = gameObject.GetComponent<ObjSelectCtrl>().selected; |
|
} |
|
} |
|
private void SetSetAreaData(RecordSetArea data) |
|
{ |
|
data.areName = Name; |
|
data.color = Color; |
|
data.height = High; |
|
} |
|
public void SetHigh(float value) |
|
{ |
|
pos = Vector3.zero; |
|
transform.localPosition = new Vector3(pos.x, pos.y + value, pos.z); |
|
High = value; |
|
//AddRecordArea(); |
|
} |
|
public void ReplayFrameData(RecordSetArea data) |
|
{ |
|
SetName(data.areName); |
|
SetColor(data.color); |
|
SetHigh(data.height); |
|
} |
|
public void SetName(string value) |
|
{ |
|
text.text = value; |
|
Name = value; |
|
//AddRecordArea(); |
|
} |
|
public void SetColor(Color value) |
|
{ |
|
render.material.color = value; |
|
Color = value; |
|
//AddRecordArea(); |
|
} |
|
public void Confirm() |
|
{ |
|
AddRecordArea(); |
|
} |
|
public void Revocation() |
|
{ |
|
SetHigh(initHigh); |
|
SetName(initName); |
|
SetColor(initColor); |
|
} |
|
private void OnMouseDown() |
|
{ |
|
//Ë«»÷ |
|
if (!EventSystem.current.IsPointerOverGameObject()) |
|
{ |
|
t2 = DateTime.Now; |
|
if (t2 - t1 < new TimeSpan(0, 0, 0, 0, 500)) |
|
{ |
|
if(SelectedObjs.selectedObj == gameObject) |
|
{ |
|
initHigh = High; |
|
initName = Name; |
|
initColor = Color; |
|
UIPlanSetArea.Instance.LoadObjData(gameObject); |
|
} |
|
} |
|
t1 = t2; |
|
} |
|
} |
|
}
|
|
|