using UnityEngine; using System.IO; namespace H2Engine { public class Bhv_TransferPoint : MonoBehaviour { [HideInInspector] public int effectID = -1; public string stateNameFront = "Fly_500"; public float flyTimeFront = 2; public string stateNameBack = "Fly_500"; public float flyTimeBack = 2; #if UNITY_EDITOR [HideInInspector] public CapsuleCollider capsuleCollider; public GameObject Effect; public void Save(BinaryWriter bw) { bw.Write(effectID); bw.Write(stateNameFront); bw.Write(flyTimeFront); bw.Write(stateNameBack); bw.Write(flyTimeBack); bw.Write((float)System.Math.Round(transform.position.x, 2)); bw.Write((float)System.Math.Round(transform.position.y, 2)); bw.Write((float)System.Math.Round(transform.position.z, 2)); bw.Write((float)System.Math.Round(capsuleCollider.radius, 2)); } public void SaveJson(System.Text.StringBuilder stringBuilder) { stringBuilder.Append("{"); stringBuilder.Append("\"effectID\":").Append(effectID).Append(","); stringBuilder.Append("\"stateNameFront\":\"").Append(stateNameFront).Append("\","); stringBuilder.Append("\"flyTimeFront\":").Append(flyTimeFront).Append(","); stringBuilder.Append("\"stateNameBack\":\"").Append(stateNameBack).Append("\","); stringBuilder.Append("\"flyTimeBack\":").Append(flyTimeBack).Append(","); stringBuilder.Append("\"px\":").Append((float)System.Math.Round(transform.position.x, 2)).Append(","); stringBuilder.Append("\"py\":").Append((float)System.Math.Round(transform.position.y, 2)).Append(","); stringBuilder.Append("\"pz\":").Append((float)System.Math.Round(transform.position.z, 2)).Append(","); stringBuilder.Append("\"r\":").Append((float)System.Math.Round(capsuleCollider.radius, 2)); stringBuilder.Append("}"); } public void LoadJson(LitJson.JsonData json) { effectID = (int)json["effectID"]; stateNameFront = json["stateNameFront"].ToString(); flyTimeFront = (int)json["flyTimeFront"]; stateNameBack = json["stateNameBack"].ToString(); flyTimeBack = (int)json["flyTimeBack"]; float _pX = Bhv_MapData.GetJsonFloat(json["px"]); float _pY = Bhv_MapData.GetJsonFloat(json["py"]); float _pZ = Bhv_MapData.GetJsonFloat(json["pz"]); transform.position = new Vector3(_pX, _pY, _pZ); float _r = Bhv_MapData.GetJsonFloat(json["r"]); capsuleCollider.radius = _r; if (EffectConfig.Has(effectID)) { var _prefab = InstanceResourcesLoader.LoadEffect(effectID); Effect = Instantiate(_prefab); Effect.transform.SetParent(transform); Effect.transform.localPosition = Vector3.zero; Effect.transform.localScale = Vector3.one; Effect.transform.rotation = Quaternion.identity; } } public void Load(BinaryReader br) { effectID = br.ReadInt32(); stateNameFront = br.ReadString(); flyTimeFront = br.ReadSingle(); stateNameBack = br.ReadString(); flyTimeBack = br.ReadSingle(); float _x = br.ReadSingle(); float _y = br.ReadSingle(); float _z = br.ReadSingle(); transform.position = new Vector3(_x, _y, _z); float _r = br.ReadSingle(); capsuleCollider.radius = _r; if (EffectConfig.Has(effectID)) { var _prefab = InstanceResourcesLoader.LoadEffect(effectID); Effect = Instantiate(_prefab); Effect.transform.SetParent(transform); Effect.transform.localPosition = Vector3.zero; Effect.transform.localScale = Vector3.one; Effect.transform.rotation = Quaternion.identity; } } public void Export(BinaryWriter bw) { Save(bw); } #endif } }