public void ReadTarFile(string cleanUrl, Coherent.UI.ResourceResponse response)
        {
            string archivePath = Path.Combine(GetArchiveFolder(), m_ArchiveName);

            using (FileStream unarchFile = File.OpenRead(archivePath))
            {
                TarReader reader = new TarReader(unarchFile);
                while (reader.MoveNext(true))
                {
                    var path = reader.FileInfo.FileName;

                    if (path == cleanUrl)
                    {
                        using (MemoryStream ms = new MemoryStream((int)reader.FileInfo.SizeInBytes))
                        {
                            reader.Read(ms);
                            byte[] buffer = ms.GetBuffer();
                            RespondWithBytes(buffer, response);
                        }

                        break;
                    }
                }
            }
        }
        public void RespondWithBytes(byte[] bytes, Coherent.UI.ResourceResponse response)
        {
            IntPtr buffer = response.GetBuffer((uint)bytes.Length);

            if (buffer == IntPtr.Zero)
            {
                response.SignalFailure();
                return;
            }

            Marshal.Copy(bytes, 0, buffer, bytes.Length);

            response.SignalSuccess();
        }
        public override void ReadFile(string url, Coherent.UI.ResourceResponse response)
        {
            string cleanUrl = string.Empty;
            bool   isFile   = GetFilepath(url, out cleanUrl);

            if (isFile)
            {
                ReadFileFromFilesystem(cleanUrl, response);
            }
            else
            {
                ReadTarFile(cleanUrl, response);
            }
        }
        public void ReadFileFromFilesystem(string cleanUrl, Coherent.UI.ResourceResponse response)
        {
                #if COHERENT_UNITY_UNSUPPORTED_PLATFORM
            throw new ApplicationException("Coherent UI doesn't support the target platform!");
                #else
            if (!File.Exists(cleanUrl))
            {
                response.SignalFailure();
                return;
            }

            byte[] bytes = File.ReadAllBytes(cleanUrl);

            RespondWithBytes(bytes, response);
                #endif
        }