Exemplo n.º 1
0
 private void OnPlayerUse(RaycastHit _RayHit, CNetworkViewId _cPlayerActorViewId, bool _bDown)
 {
     // TODO: if broken do not call this section
     s_cSerializeStream.Write(gameObject.GetComponent <CNetworkView>().ViewId);
     s_cSerializeStream.Write((byte)ENetworkAction.RefillOxygen);
     // section not to be called end.
 }
Exemplo n.º 2
0
    void ProcessOutboundPackets()
    {
        if (!m_bDownloadingInitialGameState)
        {
            // Increment outbound timer
            m_fPacketOutboundTimer += Time.deltaTime;

            if (m_fPacketOutboundTimer > m_fPacketOutboundInterval)
            {
                CNetworkStream cOutboundStream = new CNetworkStream();
                cOutboundStream.Write((byte)RakNet.DefaultMessageIDTypes.ID_TIMESTAMP);
                cOutboundStream.Write(RakNet.RakNet.GetTime());
                cOutboundStream.Write((byte)CNetworkServer.EPacketId.PlayerSerializedData);

                CompileThrottledSerializeTargetsOutboundData(cOutboundStream);

                // Check player has data to be sent to the server
                if (cOutboundStream.ByteSize > 10)                 // (byte)Packet Id + (ulong)timestamp + (byte)Packet Id
                {
                    m_tOutboundRateData.uiBytes      += cOutboundStream.ByteSize;
                    m_tOutboundRateData.uiNumEntries += 1;

                    // Dispatch data to the server
                    m_cRnPeer.Send(cOutboundStream.BitStream, RakNet.PacketPriority.IMMEDIATE_PRIORITY, RakNet.PacketReliability.RELIABLE_ORDERED, (char)0, m_cServerSystemAddress, false);

                    // Reset stream
                    s_cUntrottledSerializationStream.Clear();
                }

                // Decrement timer by interval
                m_fPacketOutboundTimer -= m_fPacketOutboundInterval;
            }
        }
    }
Exemplo n.º 3
0
    public void Start()
    {
        GetComponent <CToolInterface>().EventPrimaryActiveChange += (_bDown) =>
        {
            if (_bDown)
            {
                s_cSerializeStream.Write((byte)ENetworkAction.OpenDui);
                s_cSerializeStream.Write(ThisNetworkView.ViewId);
            }
        };

        GetComponent <CToolInterface>().EventSecondaryActiveChange += (_bDown) =>
        {
            if (_bDown)
            {
                s_cSerializeStream.Write((byte)ENetworkAction.CloseDui);
                s_cSerializeStream.Write(ThisNetworkView.ViewId);
            }
        };

        // Register the interaction events
        m_ToolInterface = gameObject.GetComponent <CToolInterface>();

        // Register DUI events
        m_DUIModuleCreationRoot = m_DUI.GetComponent <CDUIConsole>().DUI.GetComponent <CDUIModuleCreationRoot>();
        m_DUIModuleCreationRoot.EventBuildModuleButtonPressed += OnDUIBuildButtonPressed;

        // Configure DUI
        m_DUI.transform.position   = m_InactiveUITransform.position;
        m_DUI.transform.rotation   = m_InactiveUITransform.rotation;
        m_DUI.transform.localScale = m_InactiveUITransform.localScale;
    }
Exemplo n.º 4
0
    static void CompileThrottledSerializeTargetsOutboundData(CNetworkStream _cOutboundStream)
    {
        // Create packet stream
        CNetworkStream cSerializedDataStream = new CNetworkStream();

        foreach (KeyValuePair <byte, TSerializationMethods> tEntry in s_mThrottledSerializeTargets)
        {
            tEntry.Value.nSerializeMethod(cSerializedDataStream);

            if (cSerializedDataStream.BitSize > 0)
            {
                // Write the control identifier
                _cOutboundStream.Write(tEntry.Key);

                // Write the size of the data
                _cOutboundStream.WriteBits(cSerializedDataStream.BitSize, 10);

                // Write the data
                _cOutboundStream.Write(cSerializedDataStream);

                // Clear target stream
                cSerializedDataStream.Clear();
            }
        }
    }
Exemplo n.º 5
0
    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);
                }
            }
        }
    }
Exemplo n.º 6
0
    public void TransmitMicrophoneAudio(CNetworkStream _cAudioDataStream)
    {
        CNetworkStream cTransmitStream = new CNetworkStream();

        cTransmitStream.Write((byte)CNetworkServer.EPacketId.PlayerMicrophoneAudio);
        cTransmitStream.Write(_cAudioDataStream);

        m_cRnPeer.Send(cTransmitStream.BitStream, RakNet.PacketPriority.IMMEDIATE_PRIORITY, RakNet.PacketReliability.UNRELIABLE_SEQUENCED, (char)1, m_cServerSystemAddress, false);
    }
Exemplo n.º 7
0
    public static void SerializeOutbound(CNetworkStream _cStream)
    {
        if (!s_cInstance.m_InFocus)
        {
            return;
        }

        _cStream.Write(s_cInstance.m_ulInputStates);
        _cStream.Write(s_cInstance.m_fSerializeMouseMovementX);
        _cStream.Write(s_cInstance.m_fSerializeMouseMovementY);

        s_cInstance.m_fSerializeMouseMovementX = 0.0f;
        s_cInstance.m_fSerializeMouseMovementY = 0.0f;
    }
Exemplo n.º 8
0
    public static void SerializeOutbound(CNetworkStream _cStream)
    {
        // Drop
        if (Input.GetKeyDown(s_eDropKey))
        {
            _cStream.Write((byte)ENetworkAction.DropModule);
        }

        // Write in internal stream
        if (s_cSerializeStream.ByteSize > 0)
        {
            _cStream.Write(s_cSerializeStream);
            s_cSerializeStream.Clear();
        }
    }
Exemplo n.º 9
0
 public static void Serialize(CNetworkStream _cStream)
 {
     // Write in internal stream
     _cStream.Write(s_cSerializeStream);
     s_cSerializeStream.Clear();
     
 }
Exemplo n.º 10
0
    void OnHealthStateChanged(GameObject _SourcePlayer, CPlayerHealth.HealthState _eHealthCurrentState, CPlayerHealth.HealthState _eHealthPreviousState)
    {
        switch (_eHealthCurrentState)
        {
        case CPlayerHealth.HealthState.DOWNED:
        {
            s_cSerializeStream.Write((byte)ENetworkAction.EventDeath);
            break;
        }

        case CPlayerHealth.HealthState.ALIVE:
        {
            s_cSerializeStream.Write((byte)ENetworkAction.EventRevive);
            break;
        }
        }
    }
Exemplo n.º 11
0
    void EncodeAudio(object _rawData)
    {
        //Extract data from incoming data
        AudioData voiceData      = (AudioData)_rawData;
        int       iAudioDataSize = voiceData.iAudioDataSize;
        int       iFrequency     = voiceData.iFrequency;

        short[] saAudioData = voiceData.saData;

        // Encode frames
        byte[] baEncodedData         = new byte[iAudioDataSize];
        int    iTotalNumEncodedBytes = m_cEncoder.Encode(saAudioData, 0, saAudioData.Length, baEncodedData, 0, baEncodedData.Length);


        s_AudioPacket.Write(iFrequency);
        s_AudioPacket.Write(iAudioDataSize);
        s_AudioPacket.Write(iTotalNumEncodedBytes);
        s_AudioPacket.Write(baEncodedData, iTotalNumEncodedBytes);
    }
Exemplo n.º 12
0
    public static void SerializeData(CNetworkStream _cStream)
    {
        if (m_bSerializeName)
        {
            _cStream.Write((byte)ENetworkAction.ActionSendPlayerName);
            _cStream.WriteString(CGamePlayers.s_cInstance.m_sPlayerName);

            CGamePlayers.m_bSerializeName = false;
        }
    }
Exemplo n.º 13
0
    public static void SerializePlayerState(CNetworkStream _cStream)
    {
        if (CGamePlayers.SelfActor != null)
        {
            // Retrieve my actors head
            CPlayerHead cMyActorHead = CGamePlayers.SelfActor.GetComponent <CPlayerHead>();

            // Write my head's x-rotation
            _cStream.Write(cMyActorHead.m_LocalXRotation);
        }
    }
Exemplo n.º 14
0
    public void HandleValueChange()
    {
        if (CNetwork.IsServer)
        {
            // Server updates the network var
            SetSliderValue(UIProgressBar.current.value);
        }
        else
        {
            // Only add to the stream when it is empty
            if (!s_SliderNotificationStream.HasUnreadData && !m_IsDirty)
            {
                // Serialise the event to the server
                s_SliderNotificationStream.Write(GetComponent <CNetworkView>().ViewId);
                s_SliderNotificationStream.Write((byte)ESliderNotificationType.OnValueChange);
                s_SliderNotificationStream.Write(UIProgressBar.current.value);

                m_IsModifyingValueLocally = true;
                m_TimeSinceModification   = 0.0f;
            }
        }
    }
Exemplo n.º 15
0
    protected void ProcessOutgoingPackets()
    {
        // Increment outbound timer
        m_fPacketOutboundTimer += Time.deltaTime;

        // Compile and send out packets if its time
        if (m_fPacketOutboundTimer > m_fPacketOutboundInterval)
        {
            // Decrement timer
            m_fPacketOutboundTimer -= m_fPacketOutboundInterval;

            ++SendCounter;

            // Send player packets out
            foreach (KeyValuePair <ulong, CNetworkPlayer> tEntry in s_mNetworkPlayers)
            {
                CNetworkPlayer cNetworkPlayer     = tEntry.Value;
                CNetworkStream cNetworkViewStream = new CNetworkStream();
                cNetworkViewStream.Write((byte)RakNet.DefaultMessageIDTypes.ID_TIMESTAMP);
                cNetworkViewStream.Write(RakNet.RakNet.GetTime());
                cNetworkViewStream.Write(cNetworkPlayer.NetworkViewStream);

                // Check stream has outbound data
                if (cNetworkViewStream.ByteSize >= 11)
                {
                    //Logger.WriteError("Sent packet to player id ({0}) system address ({1}) of size ({2}) MessageId ({3})", cNetworkPlayer.PlayerId, cNetworkPlayer.SystemAddress, cNetworkViewStream.GetSize(), cNetworkViewStream.ReadByte());
                    //cNetworkViewStream.SetReadOffset(0);

                    // Dispatch data to player
                    m_cRnPeer.Send(cNetworkViewStream.BitStream, RakNet.PacketPriority.IMMEDIATE_PRIORITY, RakNet.PacketReliability.RELIABLE_SEQUENCED, (char)0, cNetworkPlayer.SystemAddress, false);

                    cNetworkPlayer.ResetNetworkViewSteam();
                }
            }
        }
    }
Exemplo n.º 16
0
    public static void SerializeData(CNetworkStream _cStream)
    {
        if (Instance.m_bSendMessage)
        {
            // Write the first byte to the stream as a network action
            _cStream.Write((byte)ENetworkAction.ActionSendPlayerMessage);

            // Write player's name to stream
            _cStream.WriteString(CGamePlayers.Instance.LocalPlayerName);

            // Write player's message to string
            _cStream.WriteString(m_sPlayerChatInput);

            // Clear player input
            m_sPlayerChatInput = "";

            // Stop sending the message
            Instance.m_bSendMessage = false;
        }
    }
Exemplo n.º 17
0
    protected void ProcessOutgoingPackets()
    {
        // Increment outbound timer
		m_fPacketOutboundTimer += Time.deltaTime;

        // Compile and send out packets if its time
		if (m_fPacketOutboundTimer > m_fPacketOutboundInterval)
		{
            // Decrement timer
            m_fPacketOutboundTimer -= m_fPacketOutboundInterval;

			++SendCounter;

            // Send player packets out
            foreach (KeyValuePair<ulong, CNetworkPlayer> tEntry in s_mNetworkPlayers)
            {
                CNetworkPlayer cNetworkPlayer = tEntry.Value;
				CNetworkStream cNetworkViewStream = new CNetworkStream();
				cNetworkViewStream.Write((byte)RakNet.DefaultMessageIDTypes.ID_TIMESTAMP);
				cNetworkViewStream.Write(RakNet.RakNet.GetTime());
				cNetworkViewStream.Write(cNetworkPlayer.NetworkViewStream);

                // Check stream has outbound data
				if (cNetworkViewStream.ByteSize >= 11)
                {
                    //Logger.WriteError("Sent packet to player id ({0}) system address ({1}) of size ({2}) MessageId ({3})", cNetworkPlayer.PlayerId, cNetworkPlayer.SystemAddress, cNetworkViewStream.GetSize(), cNetworkViewStream.ReadByte());
					//cNetworkViewStream.SetReadOffset(0);

                    // Dispatch data to player
					m_cRnPeer.Send(cNetworkViewStream.BitStream, RakNet.PacketPriority.IMMEDIATE_PRIORITY, RakNet.PacketReliability.RELIABLE_SEQUENCED, (char)0, cNetworkPlayer.SystemAddress, false);

					cNetworkPlayer.ResetNetworkViewSteam();
                }
            }
		}
    }
Exemplo n.º 18
0
    public void InvokeRpc(ulong _ulPlayerId, Component _cComponent, string _sFunction, params object[] _caParameterValues)
	{
        // Ensure sure only servers can invoke rpcs
        Logger.WriteErrorOn(!CNetwork.IsServer, "Only servers can invoke RPCs douche");

        // Extract method from component using its name
        MethodInfo tMethodInfo = _cComponent.GetType().GetMethod(_sFunction, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

        // Ensure the method exists
        Logger.WriteErrorOn(tMethodInfo == null, "Could not find method ({0}) in component ({1})", _sFunction, _cComponent.GetType().Name);
 
        // Find network rpc index using the method info
        byte bNetworkRpcId = FindNetworkRpcIndexUsingMethodInfo(tMethodInfo);

        // Ensure the network rpc was found
        Logger.WriteErrorOn(bNetworkRpcId == 0, "The network rpc method ({0}) in component ({1}) is not connected to this network view id ({2})", _sFunction, _cComponent.GetType().Name, this.ViewId);

        // Instance new packet stream
        CNetworkStream cRpcStream = new CNetworkStream();

        // View id
        cRpcStream.Write(this.ViewId);

        // Prodecure type
        cRpcStream.Write((byte)EProdecure.InvokeNetworkRpc);

        // Rpc identifier
        cRpcStream.Write(bNetworkRpcId);

        // Method parameter values
        cRpcStream.Write(tMethodInfo, _caParameterValues);

        // Send to all players
        if (_ulPlayerId == 0)
        {
			// Process on server straight away
			CNetworkView.ProcessInboundStream(0, cRpcStream);
			cRpcStream.SetReadOffset(0);

			// Append rpc stream to connected non-host players
            foreach (KeyValuePair<ulong, CNetworkPlayer> tEntry in CNetwork.Server.FindNetworkPlayers())
            {
                // Make host execute RPC straight away
                if (!tEntry.Value.IsHost)
                {
                    // Append packet data
                    tEntry.Value.NetworkViewStream.Write(cRpcStream);	

                    //Logger.WriteError("Written {0} bytes into player ({1})", cRpcStream.Size, tEntry.Value.PlayerId);
                }
            }

			// Notice
            Logger.Write("Sent RPC call for ({0}) to all players", _sFunction);
        }

        // Send to individual player
        else
        {
            // Retrieve player instance
            CNetworkPlayer cNetworkPlayer = CNetwork.Server.FindNetworkPlayer(_ulPlayerId);

            // Make host execute RPC straight away
            if (cNetworkPlayer.IsHost)
            {
                CNetworkView.ProcessInboundStream(0, cRpcStream);
                cRpcStream.SetReadOffset(0);
            }
            else
            {
                // Append packet data
                cNetworkPlayer.NetworkViewStream.Write(cRpcStream);
            }

            Logger.Write("Sent RPC call for ({0}) to player id ({1})", _sFunction, _ulPlayerId);
        }
	}
Exemplo n.º 19
0
	public static void SerializePlayerState(CNetworkStream _cStream)
	{
        _cStream.Write(s_cSerializeStream);
        s_cSerializeStream.Clear();
	}
Exemplo n.º 20
0
	public static void SerializePlayerState(CNetworkStream _cStream)
	{
		if (CGamePlayers.SelfActor != null)
		{
			// Retrieve my actors head
			CPlayerHead cMyActorHead = CGamePlayers.SelfActor.GetComponent<CPlayerHead>();

			// Write my head's x-rotation
			_cStream.Write(cMyActorHead.m_LocalXRotation);
		}
	}
Exemplo n.º 21
0
    public static void SerializeIKTarget(CNetworkStream _cStream)
    {
        GameObject          cSelfActor        = CGamePlayers.SelfActor;
        CPlayerIKController cSelfIKController = cSelfActor.GetComponent <CPlayerIKController>();

        if (cSelfActor != null && cSelfIKController.m_RightHandTarget != null)
        {
            // Write rotation states
            _cStream.Write((byte)ENetworkAction.SetRightTransform);
            _cStream.Write((float)cSelfIKController.m_RightHandTarget.position.x);
            _cStream.Write((float)cSelfIKController.m_RightHandTarget.position.y);
            _cStream.Write((float)cSelfIKController.m_RightHandTarget.position.z);

            _cStream.Write((float)cSelfIKController.m_RightHandTarget.rotation.eulerAngles.x);
            _cStream.Write((float)cSelfIKController.m_RightHandTarget.rotation.eulerAngles.y);
            _cStream.Write((float)cSelfIKController.m_RightHandTarget.rotation.eulerAngles.z);
        }

        if (cSelfActor != null && cSelfIKController.m_LeftHandTarget != null)
        {
            // Write rotation states
            _cStream.Write((byte)ENetworkAction.SetLeftTransform);
            _cStream.Write((float)cSelfIKController.m_LeftHandTarget.position.x);
            _cStream.Write((float)cSelfIKController.m_LeftHandTarget.position.y);
            _cStream.Write((float)cSelfIKController.m_LeftHandTarget.position.z);

            _cStream.Write((float)cSelfIKController.m_LeftHandTarget.rotation.eulerAngles.x);
            _cStream.Write((float)cSelfIKController.m_LeftHandTarget.rotation.eulerAngles.y);
            _cStream.Write((float)cSelfIKController.m_LeftHandTarget.rotation.eulerAngles.z);
        }
    }
Exemplo n.º 22
0
 static public void SerializeElementEvents(CNetworkStream _cStream)
 {
     _cStream.Write(s_ElementNotificationStream);
     s_ElementNotificationStream.Clear();
 }
Exemplo n.º 23
0
	public static void SerializeOutbound(CNetworkStream _cStream)
	{
		_cStream.Write(s_cSerializeStream);
		s_cSerializeStream.Clear();
	}
Exemplo n.º 24
0
 public static void SerializeCockpitInteractions(CNetworkStream _cStream)
 {
     _cStream.Write(s_cSerializeStream);
     s_cSerializeStream.Clear();
 }
Exemplo n.º 25
0
 public static void SerializeCockpitInteractions(CNetworkStream _cStream)
 {
     _cStream.Write(s_cSerializeStream);
     s_cSerializeStream.Clear();
 }
Exemplo n.º 26
0
 static public void SerializeSliderEvents(CNetworkStream _cStream)
 {
     _cStream.Write(s_SliderNotificationStream);
     s_SliderNotificationStream.Clear();
 }
Exemplo n.º 27
0
	public static void SerializeData(CNetworkStream _cStream)
	{
		if(m_bSerializeName)
		{
			_cStream.Write((byte)ENetworkAction.ActionSendPlayerName);
			_cStream.WriteString(CGamePlayers.s_cInstance.m_sPlayerName);
								
			CGamePlayers.m_bSerializeName = false;
		}
	}
Exemplo n.º 28
0
    public void SyncNetworkVar(ulong _ulPlayerId, byte _bNetworkVarId)
    {
        // Ensure only servers can sync network vars
        Logger.WriteErrorOn(!CNetwork.IsServer, "Clients cannot sync network vars fool!");

        // Instance new packet stream
        CNetworkStream cVarStream = new CNetworkStream();

        // View id
        cVarStream.Write(this.ViewId);

        // Prodecure type
        cVarStream.Write((byte)EProdecure.SyncNetworkVar);

        // Network var identifier
        cVarStream.Write(_bNetworkVarId);

        // Network var value
        cVarStream.Write(m_mNetworkVars[_bNetworkVarId].GetValueObject(), m_mNetworkVars[_bNetworkVarId].GetValueType());

        // Send to all players
        if (_ulPlayerId == 0)
        {
			// Process on server straight away
			CNetworkView.ProcessInboundStream(0, cVarStream);
			cVarStream.SetReadOffset(0);

			// Append network var sync stream to connected non-host players
            foreach (KeyValuePair<ulong, CNetworkPlayer> tEntry in CNetwork.Server.FindNetworkPlayers())
            {
                // Make host execute sync straight away
                if (!tEntry.Value.IsHost)
                {
                    // Append packet data
                    tEntry.Value.NetworkViewStream.Write(cVarStream);
                }
            }

			// Notice
            //Logger.Write("Sent network var sync (id {0}) to all players", _bNetworkVarId);
        }

        // Send to individual player
        else
        {
            // Retieve player instance
            CNetworkPlayer cNetworkPlayer = CNetwork.Server.FindNetworkPlayer(_ulPlayerId);

            // Make host execute sync straight away
            if (cNetworkPlayer.IsHost)
            {
                CNetworkView.ProcessInboundStream(0, cVarStream);
                cVarStream.SetReadOffset(0);
            }
            else
            {
                // Append packet data
                cNetworkPlayer.NetworkViewStream.Write(cVarStream);
            }

			// Notice
            //Logger.Write("Sent network var sync id ({0}) to player id ({1})", _bNetworkVarId, _ulPlayerId);
        }
    }
Exemplo n.º 29
0
 public static void SerializePlayerState(CNetworkStream _cStream)
 {
     _cStream.Write(s_cSerializeStream);
     s_cSerializeStream.Clear();
 }
Exemplo n.º 30
0
    protected void OnClick()
    {
        if (!m_SyncOnClick)
        {
            return;
        }

        // Serialise the event to the server
        s_ElementNotificationStream.Write(GetComponent <CNetworkView>().ViewId);
        s_ElementNotificationStream.Write((byte)EElementNotificationType.OnClick);
        s_ElementNotificationStream.Write(UICamera.currentTouchID);
    }
Exemplo n.º 31
0
 public static void Serialize(CNetworkStream _cStream)
 {
     // Write in internal stream
     _cStream.Write(s_cSerializeStream);
     s_cSerializeStream.Clear();
 }
Exemplo n.º 32
0
    static void CompileThrottledSerializeTargetsOutboundData(CNetworkStream _cOutboundStream)
    {
        // Create packet stream
        CNetworkStream cSerializedDataStream = new CNetworkStream();

        foreach (KeyValuePair<byte, TSerializationMethods> tEntry in s_mThrottledSerializeTargets)
        {
            tEntry.Value.nSerializeMethod(cSerializedDataStream);

            if (cSerializedDataStream.BitSize > 0)
            {
                // Write the control identifier
                _cOutboundStream.Write(tEntry.Key);

                // Write the size of the data
                _cOutboundStream.WriteBits(cSerializedDataStream.BitSize, 10);

                // Write the data
                _cOutboundStream.Write(cSerializedDataStream);

                // Clear target stream
                cSerializedDataStream.Clear();
            }
        }
    }
Exemplo n.º 33
0
	static public void SerializeSliderEvents(CNetworkStream _cStream)
	{
		_cStream.Write(s_SliderNotificationStream);
		s_SliderNotificationStream.Clear();
	}
Exemplo n.º 34
0
    public static void SerializeData(CNetworkStream _cStream)
    {
        if (Instance.m_bSendMessage)
        {
            // Write the first byte to the stream as a network action
            _cStream.Write((byte)ENetworkAction.ActionSendPlayerMessage);

            // Write player's name to stream
            _cStream.WriteString(CGamePlayers.Instance.LocalPlayerName);

            // Write player's message to string
            _cStream.WriteString(m_sPlayerChatInput);

            // Clear player input
            m_sPlayerChatInput = "";

            // Stop sending the message
            Instance.m_bSendMessage = false;
        }
    }
Exemplo n.º 35
0
	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); 		
				}
			}
		}
	}
Exemplo n.º 36
0
    public static void SerializeOutbound(CNetworkStream _cStream)
    {
		// Drop
		if (Input.GetKeyDown(s_eDropKey))
		{
			_cStream.Write((byte)ENetworkAction.DropModule);
		}

		// Write in internal stream
		if (s_cSerializeStream.ByteSize > 0)
		{
			_cStream.Write(s_cSerializeStream);
			s_cSerializeStream.Clear();
		}
	}
Exemplo n.º 37
0
 public static void SerializeOutbound(CNetworkStream _cStream)
 {
     _cStream.Write(s_cSerializeStream);
     s_cSerializeStream.Clear();
 }
Exemplo n.º 38
0
	public void TransmitMicrophoneAudio(CNetworkStream _cAudioDataStream)
	{

		CNetworkStream cTransmitStream = new CNetworkStream();
		cTransmitStream.Write((byte)CNetworkServer.EPacketId.PlayerMicrophoneAudio);
		cTransmitStream.Write(_cAudioDataStream);
		
		m_cRnPeer.Send(cTransmitStream.BitStream, RakNet.PacketPriority.IMMEDIATE_PRIORITY, RakNet.PacketReliability.UNRELIABLE_SEQUENCED, (char)1, m_cServerSystemAddress, false);
	}
Exemplo n.º 39
0
    void ProcessOutboundPackets()
    {
		if (!m_bDownloadingInitialGameState)
		{
			// Increment outbound timer
			m_fPacketOutboundTimer += Time.deltaTime;

			if (m_fPacketOutboundTimer > m_fPacketOutboundInterval)
			{
				CNetworkStream cOutboundStream = new CNetworkStream();
				cOutboundStream.Write((byte)RakNet.DefaultMessageIDTypes.ID_TIMESTAMP);
				cOutboundStream.Write(RakNet.RakNet.GetTime());
				cOutboundStream.Write((byte)CNetworkServer.EPacketId.PlayerSerializedData);

				CompileThrottledSerializeTargetsOutboundData(cOutboundStream);

				// Check player has data to be sent to the server
				if (cOutboundStream.ByteSize > 10) // (byte)Packet Id + (ulong)timestamp + (byte)Packet Id
				{
					m_tOutboundRateData.uiBytes += cOutboundStream.ByteSize;
					m_tOutboundRateData.uiNumEntries += 1;

					// Dispatch data to the server
					m_cRnPeer.Send(cOutboundStream.BitStream, RakNet.PacketPriority.IMMEDIATE_PRIORITY, RakNet.PacketReliability.RELIABLE_ORDERED, (char)0, m_cServerSystemAddress, false);

					// Reset stream
					s_cUntrottledSerializationStream.Clear();
				}

				// Decrement timer by interval
				m_fPacketOutboundTimer -= m_fPacketOutboundInterval;
			}
		}
    }
Exemplo n.º 40
0
	public static void SerializeIKTarget(CNetworkStream _cStream)
	{
		GameObject cSelfActor = CGamePlayers.SelfActor;
		CPlayerIKController cSelfIKController = cSelfActor.GetComponent<CPlayerIKController>();
				
		if (cSelfActor != null && cSelfIKController.m_RightHandTarget != null)
		{
			// Write rotation states
			_cStream.Write((byte)ENetworkAction.SetRightTransform);
			_cStream.Write((float)cSelfIKController.m_RightHandTarget.position.x);
			_cStream.Write((float)cSelfIKController.m_RightHandTarget.position.y);
			_cStream.Write((float)cSelfIKController.m_RightHandTarget.position.z);	      

			_cStream.Write((float)cSelfIKController.m_RightHandTarget.rotation.eulerAngles.x);
			_cStream.Write((float)cSelfIKController.m_RightHandTarget.rotation.eulerAngles.y);
			_cStream.Write((float)cSelfIKController.m_RightHandTarget.rotation.eulerAngles.z);
		}

		if (cSelfActor != null && cSelfIKController.m_LeftHandTarget != null)
		{
			// Write rotation states
			_cStream.Write((byte)ENetworkAction.SetLeftTransform);
			_cStream.Write((float)cSelfIKController.m_LeftHandTarget.position.x);
			_cStream.Write((float)cSelfIKController.m_LeftHandTarget.position.y);
			_cStream.Write((float)cSelfIKController.m_LeftHandTarget.position.z);	      
			
			_cStream.Write((float)cSelfIKController.m_LeftHandTarget.rotation.eulerAngles.x);
			_cStream.Write((float)cSelfIKController.m_LeftHandTarget.rotation.eulerAngles.y);
			_cStream.Write((float)cSelfIKController.m_LeftHandTarget.rotation.eulerAngles.z);
		}
	}