Ejemplo n.º 1
0
        /// <summary>
        /// Some of the files involved in avatar generation (e.g. textures) may be large. This function helps to
        /// work around this by saving file in a separate thread, thus not blocking the main thread.
        /// </summary>
        /// <param name="bytes">Binary file content.</param>
        /// <param name="path">Full absolute path.</param>
        public static AsyncRequest <string> SaveFileAsync(byte[] bytes, string path)
        {
            var request = new AsyncRequestThreaded <string> (() => {
                Directory.CreateDirectory(Path.GetDirectoryName(path));
                File.WriteAllBytes(path, bytes);
                return(path);
            });

            request.State = AvatarSdkMgr.Str(Strings.SavingFiles);
            AvatarSdkMgr.SpawnCoroutine(request.Await());
            return(request);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Parsing .ply data asynchronously into Unity mesh data (vertices, triangles, etc.)
        /// </summary>
        /// <param name="plyBytes">Binary content of .ply file.</param>
        public static AsyncRequest <MeshData> PlyToMeshDataAsync(byte[] plyBytes)
        {
            var request = new AsyncRequestThreaded <MeshData> (() => {
                var meshData = new MeshData();
                PlyReader.ReadMeshDataFromPly(
                    plyBytes,
                    out meshData.vertices,
                    out meshData.triangles,
                    out meshData.uv,
                    out meshData.indexMap
                    );
                return(meshData);
            }, AvatarSdkMgr.Str(Strings.ParsingMeshData));

            AvatarSdkMgr.SpawnCoroutine(request.Await());
            return(request);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Unzips the file asynchronously.
        /// </summary>
        /// <param name="path">Absolute path to zip file.</param>
        /// <param name="location">Unzip location. If null, then files will be unzipped in the location of .zip file.</param>
        public static AsyncRequest <string> UnzipFileAsync(string path, string location = null)
        {
            if (string.IsNullOrEmpty(location))
            {
                location = Path.GetDirectoryName(path);
            }

            AsyncRequest <string> request   = null;
            Func <string>         unzipFunc = () => {
                ZipUtils.Unzip(path, location);
                return(location);
            };

            // unzip asynchronously in a separate thread
            request = new AsyncRequestThreaded <string> (() => unzipFunc(), AvatarSdkMgr.Str(Strings.UnzippingFile));
            AvatarSdkMgr.SpawnCoroutine(request.Await());
            return(request);
        }