NewN_UAVPlane/Assets/Zion/Scripts/Adam/Utility/Sync/SyncPlayerTransform.cs

64 lines
1.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
namespace AdamSync
{
public class SyncPlayerTransform : AsyncObjectBase
{
private string latestData = "";
private void Start()
{
SyncCreateRoom.playerInfoRequset += ReceivePlayInfo;
if (isPlayer)
{
StartCoroutine(SendMsg());
}
else
{
//string msg = string.Format("send2room online," + GlobeFlag.userID + "," + GlobeFlag.userName + "," + GlobeFlag.roomID);
//_ = SyncCreateRoom.SendMessageAsync(msg);
}
}
private IEnumerator SendMsg()
{
while (true)
{
yield return new WaitForSeconds(0.01f);
var nowData = GetSyncData();
if (!nowData.Equals(latestData))
{
latestData = nowData;
_ = SyncCreateRoom.SendMessageAsync(string.Format("player {0}", nowData));
}
}
}
public void ReceivePlayInfo(ulong id, string pos, string angle)
{
if (id.Equals(userID))
{
transform.position = Trans(pos);
transform.eulerAngles = Trans(angle);
}
}
private Vector3 Trans(string msg)
{
string[] data = msg.Split(',');
Vector3 temp = new Vector3(float.Parse(data[0]), float.Parse(data[1]), float.Parse(data[2]));
return temp;
}
private void OnDisable()
{
Debug.Log("OnDisable");
StopAllCoroutines();
SyncCreateRoom.playerInfoRequset -= ReceivePlayInfo;
}
}
}