//DELETE: public void SendDelete(long identityId, int gpsHash) { var msg = new DeleteMsg(); msg.IdentityId = identityId; msg.Hash = gpsHash; Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request); }
public void DestoryDisconnected(DeleteMsg data) { for (int i = 0; i < data.deleteID.Count; ++i) { if (listOfOldClients.ContainsKey(data.deleteID[i])) { Destroy(listOfOldClients[data.deleteID[i]]); listOfOldClients.Remove(data.deleteID[i]); } } }
static void DeleteRequest(ref DeleteMsg msg, MyNetworkClient sender) { Dictionary <int, MyGps> gpsList; var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList); if (result) { if (gpsList.ContainsKey(msg.Hash)) { Sync.Layer.SendMessageToAllAndSelf(ref msg, MyTransportMessageEnum.Success); } } }
// heart beat void HeatbeatCheck() { // List<String> - thie list of that contains IDs which need to be deleted. List <string> deleteID = new List <string>(); foreach (KeyValuePair <string, float> dic in ClientsHeatbeatCheck) { if (Time.time - dic.Value >= 5.0f) { Debug.Log(dic.Key.ToString() + " Disconnected!"); deleteID.Add(dic.Key); } } // if there is data that need to be removed if (deleteID.Count != 0) { // delete for (int i = 0; i < deleteID.Count; ++i) { allClients.Remove(deleteID[i]); ClientsHeatbeatCheck.Remove(deleteID[i]); } // make c# class to give to clients DeleteMsg dm = new DeleteMsg(); dm.deleteID = deleteID; // send to clients for (int i = 0; i < m_Connections.Length; ++i) { // but we dont need to send already disconnected values. if (deleteID.Contains(m_Connections[i].InternalId.ToString())) { // skip continue; } SendToClient(JsonUtility.ToJson(dm), m_Connections[i]); } } }
static void DeleteSuccess(ref DeleteMsg msg, MyNetworkClient sender) { Dictionary <int, MyGps> gpsList; var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList); if (result) { MyGps gps; result = gpsList.TryGetValue(msg.Hash, out gps); if (result) { if (gps.ShowOnHud) { MyHud.GpsMarkers.UnregisterMarker(gps); } gpsList.Remove(msg.Hash); var handler = MySession.Static.Gpss.ListChanged; if (handler != null) { handler(msg.IdentityId); } } } }
static void DeleteSuccess(ref DeleteMsg msg, MyNetworkClient sender) { Dictionary<int, MyGps> gpsList; var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList); if (result) { MyGps gps; result = gpsList.TryGetValue(msg.Hash, out gps); if (result) { if (gps.ShowOnHud) MyHud.GpsMarkers.UnregisterMarker(gps); gpsList.Remove(msg.Hash); var handler = MySession.Static.Gpss.ListChanged; if (handler != null) handler(msg.IdentityId); } } }
static void DeleteRequest(ref DeleteMsg msg, MyNetworkClient sender) { Dictionary<int, MyGps> gpsList; var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList); if (result) if (gpsList.ContainsKey(msg.Hash)) Sync.Layer.SendMessageToAllAndSelf(ref msg, MyTransportMessageEnum.Success); }
void OnData(DataStreamReader stream) { NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp); stream.ReadBytes(bytes); string recMsg = Encoding.ASCII.GetString(bytes.ToArray()); NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg); switch (header.cmd) { case Commands.HANDSHAKE: HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg); Debug.Log("Handshake message received!"); break; case Commands.PLAYER_UPDATE: PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg); Debug.Log("Player update message received!"); break; case Commands.SERVER_UPDATE: ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg); Debug.Log("Server update message received!"); for (int i = 0; i < suMsg.players.Count; ++i) { Debug.Log(suMsg.players[i].id + " " + suMsg.players[i].cubPos); } // server가 보내주는 모든 정보 받기, 현교 데이터만 받아와서 내 업데이트에 적용 // -> get all data from server, and only update other clients(updates)' data to my update UpdateOldClientsInfo(suMsg); break; case Commands.INTERNAL_ID: // get internal id from server PlayerUpdateMsg internalID = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg); //Debug.Log(internalID.player.id); id = internalID.player.id; break; case Commands.OLD_CLIENTS_INFO: // get old clients info from server ServerUpdateMsg oldClientsInfo = JsonUtility.FromJson <ServerUpdateMsg>(recMsg); //for(int i = 0; i < oldClientsInfo.players.Count; ++i) //{ // Debug.Log(oldClientsInfo.players[i].id); //} // spawn old clients SpawnOldClients(oldClientsInfo); break; case Commands.NEW_CLIENTS_INFO: PlayerUpdateMsg newClientsInfo = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg); // spawn new client SpawnNewClients(newClientsInfo); break; case Commands.DISCONNECTED: DeleteMsg dm = JsonUtility.FromJson <DeleteMsg>(recMsg); // destroy method DestoryDisconnected(dm); break; default: Debug.Log("Unrecognized message received!"); break; } }