// ---------------------------------------------------------------------- // ホスト情報を送信する処理. // ---------------------------------------------------------------------- private void SendHostInfo() { GameObject[] playerList = GameObject.FindGameObjectsWithTag("Player"); List <SocketData> playerDataList = new List <SocketData>(); if (playerList.Length > 0) { for (int i = 0; i < playerList.Length; i++) { GameObject player = playerList[i]; SocketData playerData = new SocketData(); playerData.playerId = player.name; Transform trans = player.transform; Rigidbody rigid = player.GetComponent <Rigidbody>(); playerData.positionX = trans.position.x; playerData.positionY = trans.position.y; playerData.positionZ = trans.position.z; playerData.velocityX = rigid.velocity.x; playerData.velocityY = rigid.velocity.y; playerData.velocityZ = rigid.velocity.z; playerDataList.Add(playerData); } } SocketDataListWrapper sendData = new SocketDataListWrapper(); sendData.playerList = playerDataList; Send("sendHostInfo", sendData); }
private void Send(string eventName, SocketDataListWrapper data) { data.eventName = eventName; string json = JsonUtility.ToJson(data); //Debug.Log(json); ws.SendString(json); }
// ---------------------------------------------------------------------- // サーバーからの要求を受け取る処理. // ---------------------------------------------------------------------- private void RecieveInfo() { string jsonString = ws.RecvString(); while (jsonString != null) { SocketDataListWrapper recieveDataListWrapper = JsonUtility.FromJson <SocketDataListWrapper>(jsonString); switch (recieveDataListWrapper.eventName) { case "login": SocketData recieveData = JsonUtility.FromJson <SocketData>(jsonString); LoginCallback(recieveData); break; case "sendHostInfo": SetPlayerInfo(recieveDataListWrapper); break; } jsonString = ws.RecvString(); } //Debug.Log(jsonString); }
// ---------------------------------------------------------------------- // ホストで計算したプレイヤー情報などをキャッシュする処理. // ---------------------------------------------------------------------- private void SetPlayerInfo(SocketDataListWrapper listWrapper) { if (listWrapper.playerList != null) { int size = listWrapper.playerList.Count; for (int i = 0; i < size; i++) { SocketData playerInfo = listWrapper.playerList[i]; if (playerInfoMap.ContainsKey(playerInfo.playerId)) { playerInfoMap[playerInfo.playerId] = playerInfo; } else { playerInfoMap.Add(playerInfo.playerId, playerInfo); if (!playerInfo.isDelete) { CreatePlayer(playerInfo); } } } } }