Пример #1
0
    // ----------------------------------------------------------------------
    // ホスト情報を送信する処理.
    // ----------------------------------------------------------------------
    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);
    }
Пример #2
0
    private void Send(string eventName, SocketDataListWrapper data)
    {
        data.eventName = eventName;
        string json = JsonUtility.ToJson(data);

        //Debug.Log(json);
        ws.SendString(json);
    }
Пример #3
0
    // ----------------------------------------------------------------------
    // サーバーからの要求を受け取る処理.
    // ----------------------------------------------------------------------
    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);
    }
Пример #4
0
 // ----------------------------------------------------------------------
 // ホストで計算したプレイヤー情報などをキャッシュする処理.
 // ----------------------------------------------------------------------
 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);
                 }
             }
         }
     }
 }