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); }
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); }
/// <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, }); }
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; * } */ } } }
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); }
private IEnumerator DoLoad(byte[] data, ECompressionType compression = ECompressionType.LMZA) { SerializationUtils.ClearGlobalSerializableTypes(); yield return(UnpackFile(data, compression)); }