void HandleNetworkViewPacket(byte[] _baData) { if (IsConnected) { // Create stream with data CNetworkStream cStream = new CNetworkStream(_baData); // Ignore ID_TIME cStream.IgnoreBytes(1); // Retrieve latency ulong ulLatency = RakNet.RakNet.GetTime() - cStream.ReadULong(); // Ignore EPacketId.NetworkView identifier cStream.IgnoreBytes(1); // Process packet data CNetworkView.ProcessInboundStream(ulLatency, cStream); // Logger.WriteError("Processed Inbound Data of size ({0})", cStream.GetSize()); } }
public static void UnserializeInbound(CNetworkPlayer _cPlayer, CNetworkStream _cStream) { TPlayerStates tPlayerStates = s_cInstance.m_mPlayerStates[_cPlayer.PlayerId]; tPlayerStates.ulPreviousInput = tPlayerStates.ulInput; tPlayerStates.ulInput = _cStream.ReadULong(); tPlayerStates.fPreviousMouseX = tPlayerStates.fMouseX; tPlayerStates.fPreviousMouseY = tPlayerStates.fMouseY; tPlayerStates.fMouseX = _cStream.ReadFloat(); tPlayerStates.fMouseY = _cStream.ReadFloat(); if (tPlayerStates.fPreviousMouseX != tPlayerStates.fMouseX) { s_cInstance.InvokeClientClientAxisEvent(EAxis.MouseX, _cPlayer.PlayerId, tPlayerStates.fMouseX); } if (tPlayerStates.fPreviousMouseY != tPlayerStates.fMouseY) { s_cInstance.InvokeClientClientAxisEvent(EAxis.MouseY, _cPlayer.PlayerId, tPlayerStates.fMouseY); } s_cInstance.ProcessClientEvents(_cPlayer.PlayerId, tPlayerStates); }
public static void ProcessPlayerSerializedData(CNetworkPlayer _cPlayer, byte[] _baData) { // Create packet stream CNetworkStream cStream = new CNetworkStream(_baData); // Ignore timestamp packet id cStream.IgnoreBytes(1); // Retrieve latency ulong ulLatency = RakNet.RakNet.GetTime() - cStream.ReadULong(); // Ignmore serialized data packet id cStream.IgnoreBytes(1); // Iterate through the packet data while (cStream.HasUnreadData && cStream.NumUnreadBits > 18) { // Extract the target identifier byte bTargetIdentifier = cStream.ReadByte(); // Extract the size of the data ushort usBitSize = cStream.ReadBits <ushort>(10); ushort usByteSize = (ushort)((float)usBitSize / 8.0f); // Extract the data byte[] baData = new byte[usByteSize]; cStream.BitStream.ReadBits(baData, usBitSize); // Create stream for the control CNetworkStream cTargetStream = new CNetworkStream(); cTargetStream.WriteBits(baData, usBitSize); // Have the target process its data s_mThrottledSerializeTargets[bTargetIdentifier].nUnserializeMethod(_cPlayer, cTargetStream); } }
public static void ProcessPlayerSerializedData(CNetworkPlayer _cPlayer, byte[] _baData) { // Create packet stream CNetworkStream cStream = new CNetworkStream(_baData); // Ignore timestamp packet id cStream.IgnoreBytes(1); // Retrieve latency ulong ulLatency = RakNet.RakNet.GetTime() - cStream.ReadULong(); // Ignmore serialized data packet id cStream.IgnoreBytes(1); // Iterate through the packet data while (cStream.HasUnreadData && cStream.NumUnreadBits > 18) { // Extract the target identifier byte bTargetIdentifier = cStream.ReadByte(); // Extract the size of the data ushort usBitSize = cStream.ReadBits<ushort>(10); ushort usByteSize = (ushort)((float)usBitSize / 8.0f); // Extract the data byte[] baData = new byte[usByteSize]; cStream.BitStream.ReadBits(baData, usBitSize); // Create stream for the control CNetworkStream cTargetStream = new CNetworkStream(); cTargetStream.WriteBits(baData, usBitSize); // Have the target process its data s_mThrottledSerializeTargets[bTargetIdentifier].nUnserializeMethod(_cPlayer, cTargetStream); } }