private static IEnumerator SendChunkToServer(ZRpc client, int chunk)
        {
            if (chunk >= CHUNKS)
            {
                yield break;
            }


            var size       = ExplorationDatabase.MapSizeSquared / CHUNKS;
            var startIndex = chunk * (ExplorationDatabase.MapSizeSquared / CHUNKS);
            var explored   = Traverse.Create(_Minimap._instance).Field("m_explored").GetValue() as bool[];
            var z          = ExplorationDatabase.PackBoolArray(explored, chunk, startIndex, size);

            if (client == null)
            {
                OnClientInitialData(null, z);
            }
            else
            {
                yield return(new WaitUntil(() => _ZNet.GetServerRPC(_ZNet._instance) != null));

                var server = _ZNet.GetServerRPC(_ZNet._instance);
                server.Invoke("OnClientInitialData", (object)z);
            }
        }
        private static void SendChunkToClient(ZRpc client, int chunk)
        {
            if (chunk >= CHUNKS)
            {
                return;
            }

            var size       = ExplorationDatabase.MapSizeSquared / CHUNKS;
            var startIndex = chunk * (ExplorationDatabase.MapSizeSquared / CHUNKS);
            var z          = ExplorationDatabase.PackBoolArray(ExplorationDatabase.GetExplorationArray(), chunk, startIndex, size);

            if (client == null)
            {
                OnReceiveMapDataInitial(null, z);
            }
            else
            {
                client.Invoke("OnReceiveMapDataInitial", (object)z);
            }
        }