private void OnReceivedClientMovementData(ulong guid) { playerObject tempObj = clients[guid]; tempObj.m_x = m_NetworkReader.ReadFloat(); tempObj.m_y = m_NetworkReader.ReadFloat(); tempObj.m_z = m_NetworkReader.ReadFloat(); tempObj.rotation_x = m_NetworkReader.ReadFloat(); tempObj.rotation_y = m_NetworkReader.ReadFloat(); tempObj.rotation_z = m_NetworkReader.ReadFloat(); tempObj.velocity_X = m_NetworkReader.ReadFloat(); tempObj.velocity_Y = m_NetworkReader.ReadFloat(); tempObj.velocity_Z = m_NetworkReader.ReadFloat(); clients[guid] = tempObj; if (m_NetworkWriter.StartWritting()) { m_NetworkWriter.WritePacketID((byte)Packets_ID.ID_MOVEMENT); m_NetworkWriter.Write(tempObj.id); m_NetworkWriter.Write(tempObj.m_x); m_NetworkWriter.Write(tempObj.m_y); m_NetworkWriter.Write(tempObj.m_z); m_NetworkWriter.Write(tempObj.rotation_x); m_NetworkWriter.Write(tempObj.rotation_y); m_NetworkWriter.Write(tempObj.rotation_z); m_NetworkWriter.Write(tempObj.velocity_X); m_NetworkWriter.Write(tempObj.velocity_Y); m_NetworkWriter.Write(tempObj.velocity_Z); SendToAll(guid, m_NetworkWriter, true); } }
private void SendMovement() { if (m_NetworkWriter.StartWritting()) { PlayerManager me = playersList[0]; if (me == null) { return; } m_NetworkWriter.WritePacketID((byte)Packets_ID.ID_MOVEMENT); // step 9 : Instead of sending x,y,w ..... , send the server version instead (x,y,w,velocity, angular velocity) m_NetworkWriter.Write(me.position.x); m_NetworkWriter.Write(me.position.y); m_NetworkWriter.Write(me.position.z); m_NetworkWriter.Write(me.pRotation.x); m_NetworkWriter.Write(me.pRotation.y); m_NetworkWriter.Write(me.pRotation.z); m_NetworkWriter.Write(me.velocity.x); m_NetworkWriter.Write(me.velocity.y); m_NetworkWriter.Write(me.velocity.z); m_NetworkWriter.Send(serveruid, Peer.Priority.Immediate, Peer.Reliability.Reliable, 0); } }
/// <summary> /// Parsing packet /// </summary> /// <param name="packet_id">PACKET ID - SEE Packets_ID.cs</param> private void OnReceivedPacket(byte packet_id) { bool IsInternalNetworkPackets = packet_id <= 134; if (IsInternalNetworkPackets) { if (packet_id == (byte)Peer.RakNet_Packets_ID.CONNECTION_REQUEST_ACCEPTED) { OnConnected(peer.incomingAddress); } if (packet_id == (byte)Peer.RakNet_Packets_ID.CONNECTION_ATTEMPT_FAILED) { OnDisconnected("Connection attempt failed"); } if (packet_id == (byte)Peer.RakNet_Packets_ID.INCOMPATIBLE_PROTOCOL_VERSION) { OnDisconnected("Incompatible protocol version"); } if (packet_id == (byte)Peer.RakNet_Packets_ID.CONNECTION_LOST) { OnDisconnected("Time out"); } if (packet_id == (byte)Peer.RakNet_Packets_ID.NO_FREE_INCOMING_CONNECTIONS) { OnDisconnected("Server is full."); } if (packet_id == (byte)Peer.RakNet_Packets_ID.DISCONNECTION_NOTIFICATION && !tmp_Banned && !tmp_Fake) { OnDisconnected("You are kicked!"); } } else { if (packet_id == (byte)Packets_ID.CL_INFO) { if (m_NetworkWriter.StartWritting()) { m_NetworkWriter.WritePacketID((byte)Packets_ID.CL_INFO); m_NetworkWriter.Write(m_ClientNetInfo.name); m_NetworkWriter.WritePackedUInt64(m_ClientNetInfo.local_id); m_NetworkWriter.Write(m_ClientNetInfo.client_hwid); m_NetworkWriter.Write(m_ClientNetInfo.client_version); m_NetworkWriter.Send(peer.incomingGUID, Peer.Priority.Immediate, Peer.Reliability.Reliable, 0);//sending } } if (packet_id == (byte)Packets_ID.CL_ACCEPTED) { m_ClientNetInfo.net_id = m_NetworkReader.ReadPackedUInt64(); Debug.Log("[Client] Accepted connection by server... [ID: " + m_ClientNetInfo.net_id + "]"); } if (packet_id == (byte)Packets_ID.CL_BANNED) { tmp_Banned = true; OnDisconnected("You are banned on this server!"); } if (packet_id == (byte)Packets_ID.CL_FAKE) { tmp_Fake = true; OnDisconnected("Fake client! Please wait few seconds..."); } } }