コード例 #1
0
        public static byte[] Compress(byte[] data, ECompressionType compressType) //, int start = 0, int count = 0)
        {
            byte[] compressedData;
            switch (compressType)
            {
            case ECompressionType.LzMa:
                compressedData = SevenZipHelper.CompressData(data);
                break;

            case ECompressionType.Lz4:       //LZ4
            case ECompressionType.Lz4Hc:     //LZ4HC
                compressedData = new byte[LZ4Codec.MaximumOutputSize(data.Length)];
                var compressedSize = LZ4Codec.Encode(data, 0, data.Length,
                                                     compressedData, 0, compressedData.Length);
                Array.Resize(ref compressedData, compressedSize);
                break;

            //case CompressionType.LzHam:   //LZHAM
            case ECompressionType.None:          //None
            default:
            {
                compressedData = data;
                break;
            }
            }

            return(compressedData);
        }
コード例 #2
0
        public static MemoryStream DecompressToMemoryStream(byte[] compressedBytes, ECompressionType compressType, int decompressedSize = -1)
        {
            MemoryStream decompressedStream;

            switch (compressType)
            {
            case ECompressionType.LzMa:      //LZMA
            {
                decompressedStream = new MemoryStream();
                SevenZipHelper.DecompressData(compressedBytes, decompressedStream, decompressedSize);
                break;
            }

            case ECompressionType.Lz4:       //LZ4
            case ECompressionType.Lz4Hc:     //LZ4HC
            {
                var decompressedBytes = new byte[decompressedSize];
                LZ4Codec.Decode(compressedBytes, 0, compressedBytes.Length,
                                decompressedBytes, 0, decompressedSize);
                decompressedStream = new MemoryStream(decompressedBytes);
                break;
            }

            //case CompressionType.LzHam:   //LZHAM
            case ECompressionType.None:          //None
            default:
            {
                decompressedStream = new MemoryStream(compressedBytes);
                break;
            }
            }
            return(decompressedStream);
        }
コード例 #3
0
 /// <summary>
 /// Builds a Liminal Experience Application from the current scene and standalone build target.
 /// </summary>
 public static void BuildLimapp(BuildTarget target, AppBuildInfo.BuildTargetDevices devices,
                                ECompressionType compression = ECompressionType.LMZA)
 {
     Build(new AppBuildInfo()
     {
         Scene             = SceneManager.GetActiveScene(),
         BuildTarget       = target,
         BuildTargetDevice = devices,
         CompressionType   = compression,
     });
 }
コード例 #4
0
        private IEnumerator UnpackFile(byte[] data, ECompressionType compression = ECompressionType.LMZA)
        {
            Debug.Log("[BundleLoader] Commencing unpack...");

            using (new HighCpuLevelSection())
            {
                SetState(State.Unpacking);

                var unpacker = new AppUnpacker();

                try
                {
                    unpacker.UnpackAsync(data, compression);
                }
                catch (Exception e)
                {
                    Debug.Log("[BundleLoader]" + e);
                }

                if (IsFaulted)
                {
                    Debug.Log("[BundleLoader] Bundle is faulted.");
                    yield break;
                }

                yield return(new WaitUntil(() => unpacker.IsDone));

                if (unpacker.IsFaulted)
                {
                    Debug.LogError("[BundleLoader] Unpack failed");
                    Debug.LogException(unpacker.Exception);
                    Cancel();
                    yield break;
                }
                else
                {
                    Debug.Log("[BundleLoader] Unpack complete");
                    mAppPack = unpacker.Data;

                    /*
                     * if (mAppPack.ApplicationId != mExperience.Id)
                     * {
                     *  var message = string.Format("[BundleLoader] Bundle Application Id {0} did not match Experience Id {1}", mAppPack.ApplicationId, mExperience.Id);
                     *  FaultWithException(new BundleFileException(mExperience, message));
                     *  Cancel();
                     *  yield break;
                     * }
                     */
                }
            }
        }
コード例 #5
0
        private static string GetFileExtension(ECompressionType compressionType = ECompressionType.LMZA)
        {
            var extension = string.Empty;

            switch (compressionType)
            {
            case ECompressionType.LMZA:
                extension = "limapp";
                break;

            case ECompressionType.Uncompressed:
                extension = "ulimapp";
                break;
            }

            return(extension);
        }
コード例 #6
0
 private IEnumerator DoLoad(byte[] data, ECompressionType compression = ECompressionType.LMZA)
 {
     SerializationUtils.ClearGlobalSerializableTypes();
     yield return(UnpackFile(data, compression));
 }