public Packet RecievePacket() { bool valid = false; while (!valid) { P2Packet packet = RecieveRaw(); if (packet.SteamId == NetClient.instanceClient.serversSteamID) { valid = true; return(ENSSerialization.DeserializePacket(packet.Data)); } } return(null); }
public void SendPacket(Packet packet, bool ignoreSelf = false) { byte[] bytePacket = ENSSerialization.SerializePacket(packet); foreach (NetworkPlayer player in NetServer.serverInstance.connections.ToArray()) { if (ignoreSelf && NetServer.serverInstance.myConnection == player) { continue; } if (packet.sendToAll || packet.usersToRecieve.Contains(player.clientID)) { bool outcome = SteamNetworking.SendP2PPacket(player.steamID, bytePacket, bytePacket.Length, 1, sendType: P2PSend.Unreliable); //Debug.Log(outcome); //udpServer.Send(bytePacket, bytePacket.Length, player.udpEndpoint); } } }
public void SendPacket(Packet packet) { byte[] bytePacket = ENSSerialization.SerializePacket(packet); bool outcome = SteamNetworking.SendP2PPacket(NetClient.instanceClient.serversSteamID, bytePacket, bytePacket.Length, 1, sendType: P2PSend.Unreliable); //Debug.Log(outcome); //client.Send(bytePacket, bytePacket.Length, serverEndpoint); #if UNITY_EDITOR if (NetClient.instanceClient.trackOverhead) { if (NetClient.instanceClient.overheadFilter == Packet.pType.unassigned || NetClient.instanceClient.overheadFilter == packet.packetType) { NetClient.instanceClient.packetsSent++; //Debug.Log("Sent Packet: " + packet.packetSendType + ". To: "+serverEndpoint.ToString()); } } #endif }
public Packet Recieve() { while (true) { try { P2Packet recieved = RecieveMessage(); Packet p = ENSSerialization.DeserializePacket(recieved.Data); if (NetServer.serverInstance.VerifyPacketValidity(recieved.SteamId, p))//(recieved.Key != null) { return(p); } Debug.Log("Couldn't verify packet's validity"); } catch (System.Exception e) { if (e.ToString().Contains("NullReferenceException") || e.ToString().Contains("ThreadAbortException")) { return(null); //Most likely the editor closed abruptly or server closed. } Debug.LogError(e); } } }
public void UpdateField <T>(T value, int netObjID, bool immediateOnSelf = true) { if (value == null) { Debug.LogError("Cannot change value to null...", netObj.transform); return; } object newValue = value; if (value.GetType() == typeof(Vector3)) { newValue = new SerializableVector((Vector3)System.Convert.ChangeType(value, typeof(Vector3))); } if (netObj == null) { netObj = NetworkObject.NetObjFromNetID(netObjID); } //If still null, netObj must of been destroyed. if (netObj == null) { return; } if (netID == -1) { netID = netObj.networkID; } JsonPacketObject jPO; if (!ENSUtils.IsSimple(newValue.GetType())) { jPO = new JsonPacketObject(JsonUtility.ToJson(newValue), newValue.GetType().ToString()); } else { jPO = new JsonPacketObject("" + newValue, newValue.GetType().ToString()); } if (!NetTools.IsMultiplayerGame()) { //If singleplayer game just immediately set the value no matter what. No need to use the packet handler for this. LocalFieldSet(newValue); return; } Packet pack = new Packet(Packet.pType.netVarEdit, Packet.sendType.nonbuffered, ENSSerialization.SerializeNetworkFieldPacket(new NetworkFieldPacket(netObjID, fieldName, jPO, immediateOnSelf))); pack.reliable = reliable; pack.relatesToNetObjID = netObjID; if (shouldBeProximity && netObj != null) { pack.packetSendType = Packet.sendType.proximity; pack.packetPosition = new SerializableVector(netObj.transform.position); } if (NetClient.instanceClient != null && !netObj.updateFieldsThroughServer) { NetClient.instanceClient.SendPacket(pack); } else if (NetServer.serverInstance != null) { foreach (NetworkPlayer player in NetServer.serverInstance.connections) { if (!player.playerConnected) { continue; //No longer connected. } if (player.clientID == NetTools.clientID) { continue; } NetServer.serverInstance.SendPacket(player, pack); } } if (immediateOnSelf) { LocalFieldSet(newValue); } }