64 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|