private string TranslateTCP(TcpClient client, EN_TCP_PACKET_TYPE type, byte[] bytes) { string s = ""; if (type == EN_TCP_PACKET_TYPE.CONNECT) { EN_PacketConnect packet = EN_Protocol.BytesToObject <EN_PacketConnect>(bytes); // Resend older important messages from before ResendStackTCP(client); // Send out this connection packet to the rest of the clients BroadcastAllTCP(bytes); // Add connect request to the stack of important messages packet_stack.Add(bytes); s = packet.packet_client_name + " connected."; IPEndPoint temp = (IPEndPoint)client.Client.RemoteEndPoint; udp_clients.Add(temp); // Add client to list of unique ID's //clients.Add(new EN_ClientInfo(client, packet.packet_client_guid, packet.packet_client_name)); } if (type == EN_TCP_PACKET_TYPE.MESSAGE) { EN_PacketMessage packet = EN_Protocol.BytesToObject <EN_PacketMessage>(bytes); s = packet.packet_message; } if (type == EN_TCP_PACKET_TYPE.SPAWN_OBJECT) { EN_PacketSpawnObject packet = EN_Protocol.BytesToObject <EN_PacketSpawnObject>(bytes); current_networkID++; networkIDs.Add(packet.packet_network_id, current_networkID); packet.packet_network_id = networkIDs[packet.packet_network_id]; byte[] bytes_data = EN_Protocol.ObjectToBytes(packet); BroadcastTCP(client, bytes_data); s = packet.packet_prefab + " with network ID " + packet.packet_network_id + " was spawned."; } if (type == EN_TCP_PACKET_TYPE.REMOVE_OBJECT) { EN_PacketRemoveObject packet = EN_Protocol.BytesToObject <EN_PacketRemoveObject>(bytes); packet.packet_network_id = networkIDs[packet.packet_network_id]; byte[] bytes_data = EN_Protocol.ObjectToBytes(packet); BroadcastTCP(client, bytes_data); s = "Prefab with network ID " + packet.packet_network_id + " was removed."; } return(s); }
private void TranslateUDP(IPEndPoint source, EN_UDP_PACKET_TYPE type, byte[] bytes) { if (type == EN_UDP_PACKET_TYPE.TRANSFORM) { EN_PacketTransform packet = EN_Protocol.BytesToObject <EN_PacketTransform>(bytes); // This comes in as a Unity InstanceID, we need to networkID-it packet.packet_network_id = networkIDs[packet.packet_network_id]; byte[] bytes_data = EN_Protocol.ObjectToBytes(packet); BroadcastUDP(source, bytes_data); } }