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. }
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; } } }
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; }
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(); } } }
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); } } } }
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); }
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; }
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(); } }
public static void Serialize(CNetworkStream _cStream) { // Write in internal stream _cStream.Write(s_cSerializeStream); s_cSerializeStream.Clear(); }
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; } } }
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); }
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; } }
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); } }
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; } } }
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(); } } } }
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; } }
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(); } } } }
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); } }
public static void SerializePlayerState(CNetworkStream _cStream) { _cStream.Write(s_cSerializeStream); s_cSerializeStream.Clear(); }
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); } }
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); } }
static public void SerializeElementEvents(CNetworkStream _cStream) { _cStream.Write(s_ElementNotificationStream); s_ElementNotificationStream.Clear(); }
public static void SerializeOutbound(CNetworkStream _cStream) { _cStream.Write(s_cSerializeStream); s_cSerializeStream.Clear(); }
public static void SerializeCockpitInteractions(CNetworkStream _cStream) { _cStream.Write(s_cSerializeStream); s_cSerializeStream.Clear(); }
static public void SerializeSliderEvents(CNetworkStream _cStream) { _cStream.Write(s_SliderNotificationStream); s_SliderNotificationStream.Clear(); }
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; } }
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); } }
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); }
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(); } } }
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); } } } }
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); } }