void OnRecievedPlayerMicrophoneAudio(CNetworkPlayer _cPlayer, CNetworkStream _cAudioDataStream)
    {
        GameObject     playerActor  = CGamePlayers.GetPlayerActor(_cPlayer.PlayerId);
        CNetworkViewId playerViewID = playerActor.GetComponent <CNetworkView>().ViewId;

        _cAudioDataStream.SetReadOffset(0);
        byte[] streamData = _cAudioDataStream.ReadBytes(_cAudioDataStream.NumUnreadBytes);

        CNetworkStream dataStream = new CNetworkStream();

        dataStream.Write(streamData);
        dataStream.Write(playerViewID);

        Dictionary <ulong, CNetworkPlayer> players = CNetwork.Server.FindNetworkPlayers();

        foreach (ulong playerID in players.Keys)
        {
            if (m_bReturnToSender)
            {
                CNetwork.Server.TransmitMicrophoneAudio(playerID, dataStream);
            }
            else
            {
                if (_cPlayer.PlayerId != playerID)
                {
                    CNetwork.Server.TransmitMicrophoneAudio(playerID, dataStream);
                }
            }
        }
    }
    void DecodeAudio(object _rawData)
    {
        //Convert incoming data to a CNetworkStream.
        CNetworkStream _cAudioDataStream = (CNetworkStream)_rawData;

        //Pull relevant information out of the network stream.
        int iFrequency       = _cAudioDataStream.ReadInt();
        int iNumSamples      = _cAudioDataStream.ReadInt();
        int iNumEncodedBytes = _cAudioDataStream.ReadInt();

        byte[]         baEncodedData = _cAudioDataStream.ReadBytes(iNumEncodedBytes);
        CNetworkViewId cSenderViewID = _cAudioDataStream.ReadNetworkViewId();

        // Decode
        short[] saDecodedFrames  = new short[iNumSamples];
        int     iNumDecodedBytes = m_eDecoder.Decode(baEncodedData, 0, iNumEncodedBytes, saDecodedFrames, 0, false);
        //Debug.Log("Decoded audio data size: " + iNumDecodedBytes + " : " + saDecodedFrames.Length);

        //Populate a new struct which can be accessed later.
        DecodeInformation decodedFrameInfo;

        decodedFrameInfo.saDecodedData = saDecodedFrames;
        decodedFrameInfo.iFrequency    = iFrequency;
        decodedFrameInfo.cSenderViewID = cSenderViewID;
        decodedFrameInfo.iNumSamples   = iNumSamples;

        s_decodedFrames.Enqueue(decodedFrameInfo);
    }
Example #3
0
	protected void HandleUnconnectPong(byte[] _baData, RakNet.SystemAddress _cServerSystemAddress, RakNet.RakNetGUID _cServerGuid)
	{
		// Create stream
		CNetworkStream cStream = new CNetworkStream(_baData);

		// Ignore message identifier
		cStream.IgnoreBytes(1);

		// Read time
		uint uiTime = cStream.ReadUInt();

		// Read response data
		byte[] baOfflinePingResponse = cStream.ReadBytes(cStream.NumUnreadBytes);

		// Create server info
		TServer tLanServerInfo = new TServer();
		tLanServerInfo.sIp = _cServerSystemAddress.ToString();
		tLanServerInfo.usPort = _cServerSystemAddress.GetPort();
		tLanServerInfo.uiLatency = RakNet.RakNet.GetTimeMS() - uiTime;
		tLanServerInfo.cGuid = new RakNet.RakNetGUID(_cServerGuid.g);

		// Convert response data to server info
		tLanServerInfo.tServerInfo = new CNetworkServer.TServerInfo(baOfflinePingResponse);
	
		
		uint uiLocalNumberOfAddresses = m_cRnPeer.GetNumberOfAddresses();
		string sIpPrefix = _cServerSystemAddress.ToString().Substring(0, _cServerSystemAddress.ToString().IndexOf('.'));
		bool bIsLanServer = false;


		for (uint i = 0; i < uiLocalNumberOfAddresses; ++ i)
		{
			string sMyLanIp = m_cRnPeer.GetLocalIP(i);


			string sLanIpPrefix = sMyLanIp.Substring(0, sMyLanIp.IndexOf('.'));


			if (sLanIpPrefix == sIpPrefix)
			{
				bIsLanServer = true;
				break;
			}
		}


		if (!bIsLanServer)
		{
			m_aOnlineServers.Add(tLanServerInfo);
		}
		else
		{
			m_aLanServers.Add(tLanServerInfo);
		}


		//Logger.WriteError("Added server ({0}:({1}) lan ({2})", tLanServerInfo.sIp, tLanServerInfo.usPort, bIsLanServer);


		// Notify event observers
		if (EventFoundServer != null)
		{
			EventFoundServer(tLanServerInfo);
		}
	}
	void OnRecievedPlayerMicrophoneAudio(CNetworkPlayer _cPlayer, CNetworkStream _cAudioDataStream)
	{		
		GameObject playerActor = CGamePlayers.GetPlayerActor(_cPlayer.PlayerId);
		CNetworkViewId playerViewID = playerActor.GetComponent<CNetworkView>().ViewId;
			
		_cAudioDataStream.SetReadOffset(0);		
		byte[] streamData =  _cAudioDataStream.ReadBytes(_cAudioDataStream.NumUnreadBytes);
		
		CNetworkStream dataStream = new CNetworkStream();
		dataStream.Write(streamData);
		dataStream.Write(playerViewID);		
				
		Dictionary<ulong,CNetworkPlayer> players = CNetwork.Server.FindNetworkPlayers();
					
		foreach(ulong playerID in players.Keys)
		{
			if(m_bReturnToSender)
			{
				CNetwork.Server.TransmitMicrophoneAudio(playerID, dataStream); 	
			}
			else
			{
				if(_cPlayer.PlayerId != playerID)
				{
					CNetwork.Server.TransmitMicrophoneAudio(playerID, dataStream); 		
				}
			}
		}
	}
Example #5
0
    protected void HandleUnconnectPong(byte[] _baData, RakNet.SystemAddress _cServerSystemAddress, RakNet.RakNetGUID _cServerGuid)
    {
        // Create stream
        CNetworkStream cStream = new CNetworkStream(_baData);

        // Ignore message identifier
        cStream.IgnoreBytes(1);

        // Read time
        uint uiTime = cStream.ReadUInt();

        // Read response data
        byte[] baOfflinePingResponse = cStream.ReadBytes(cStream.NumUnreadBytes);

        // Create server info
        TServer tLanServerInfo = new TServer();

        tLanServerInfo.sIp       = _cServerSystemAddress.ToString();
        tLanServerInfo.usPort    = _cServerSystemAddress.GetPort();
        tLanServerInfo.uiLatency = RakNet.RakNet.GetTimeMS() - uiTime;
        tLanServerInfo.cGuid     = new RakNet.RakNetGUID(_cServerGuid.g);

        // Convert response data to server info
        tLanServerInfo.tServerInfo = new CNetworkServer.TServerInfo(baOfflinePingResponse);


        uint   uiLocalNumberOfAddresses = m_cRnPeer.GetNumberOfAddresses();
        string sIpPrefix    = _cServerSystemAddress.ToString().Substring(0, _cServerSystemAddress.ToString().IndexOf('.'));
        bool   bIsLanServer = false;


        for (uint i = 0; i < uiLocalNumberOfAddresses; ++i)
        {
            string sMyLanIp = m_cRnPeer.GetLocalIP(i);


            string sLanIpPrefix = sMyLanIp.Substring(0, sMyLanIp.IndexOf('.'));


            if (sLanIpPrefix == sIpPrefix)
            {
                bIsLanServer = true;
                break;
            }
        }


        if (!bIsLanServer)
        {
            m_aOnlineServers.Add(tLanServerInfo);
        }
        else
        {
            m_aLanServers.Add(tLanServerInfo);
        }


        //Logger.WriteError("Added server ({0}:({1}) lan ({2})", tLanServerInfo.sIp, tLanServerInfo.usPort, bIsLanServer);


        // Notify event observers
        if (EventFoundServer != null)
        {
            EventFoundServer(tLanServerInfo);
        }
    }