public override void HandleBytes(byte[] bytes, int offset) { pProgressionDataRequest requestData = new pProgressionDataRequest(); int size = Marshal.SizeOf(requestData); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.Copy(bytes, offset, ptr, size); requestData = (pProgressionDataRequest)Marshal.PtrToStructure(ptr, requestData.GetType()); Debug.LogWarning("Received progression request (ACK: " + requestData.ack + ")"); OnReceive(requestData); Marshal.FreeHGlobal(ptr); }
public void OnReceive(pProgressionDataRequest requestData) { if (requestData.from.TryGet(out Player.PlayerAgent p) && ExtendedPlayerAgent.TryGetOrCreate(p, out ExtendedPlayerAgent player)) { player.ProgressionSynced = requestData.ack; if (NET.IsMaster && !player.ProgressionSynced) { if (ExtendedPlayerAgent.TryGet(NET.SNetMaster.PlayerAgent.TryCast <PlayerAgent>(), out ExtendedPlayerAgent master)) { master.ProgressionReplicator.SendProgressionData(player); } else { Debug.LogError("COULD NOT FIND THE MASTA!!!!"); } } }