//call in fader after map loading public static void OnPostLoadReconstruction() { for (int i = 0; i < instance.messageWaitingList.Count; i++) { NetDataReader tempReader = instance.messageWaitingList[i]; NetworkMessage.Type messageType = (NetworkMessage.Type)tempReader.GetByte(); Game.AddThreadAction(() => NetworkMessageResolve.Resolve(messageType, tempReader)); } instance.messageWaitingList.Clear(); }
public static void OnCreatedEntity(Entity entity) { if (!instance.entityMessageWaitingList.ContainsKey(entity.GetId())) { return; } for (int i = 0; i < instance.entityMessageWaitingList[entity.GetId()].Count; i++) { NetDataReader data = instance.entityMessageWaitingList[entity.GetId()][i]; NetworkMessage.Type messageType = (NetworkMessage.Type)data.GetByte(); Game.AddThreadAction(() => NetworkMessageResolve.Resolve(messageType, data)); } instance.entityMessageWaitingList.Remove(entity.GetId()); }
private void OnNetworkReceiveEvent(NetPeer peer, NetDataReader reader) { Debug.Assert(reader != null && reader.Data != null, "There is null as reader or reader data!"); NetDataReader data = new NetDataReader(reader.Data); if (data == null || data.Data == null || data.Data.Length == 0) { return; } NetworkMessage.Type messageType = (NetworkMessage.Type)data.GetByte(); if (CanProcessMessage(messageType)) { Game.AddThreadAction(() => NetworkMessageResolve.Resolve(messageType, data)); } else { messageWaitingList.Add(new NetDataReader(data.Data)); } }