From b602ef34903c27266c2f8ebaeef055616bd40421 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 01 十一月 2018 18:17:27 +0800
Subject: [PATCH] 3335 资源打包使用7zip压缩
---
Assets/Plugins/iOS/bitcode.meta | 9
Assets/Plugins/iOS/bitcode/liblzma.a-aggressive-bitcode.zip | 0
Assets/Plugins/iOS/liblzma.a.aggresive.zip.meta | 6
Assets/Plugins/x86_64/liblzma.so.meta | 78 ++
Assets/Plugins/liblzma.bundle/Contents/MacOS/liblzma | 0
Assets/Plugins/Android/libs/armeabi-v7a/liblzma.so | 0
Assets/Plugins/liblzma.bundle/Contents.meta | 7
Assets/Plugins/Android/libs/x86/liblzma.so | 0
Assets/Plugins/SevenZip/lzma.cs.meta | 8
Assets/Plugins/iOS/bitcode/liblzma.a-fastest-smallest-bitcode.zip.meta | 8
Assets/Plugins/iOS/liblzma.a | 0
Assets/Plugins/Android/libs/x86_64/liblzma.zip.meta | 4
Assets/Plugins/x86_64.meta | 7
Assets/Plugins/x86/liblzma.dll.meta | 78 ++
Assets/Plugins/iOS/bitcode/libbrotli.meta | 9
Assets/Plugins/iOS/bitcode/liblz4.meta | 9
Assets/Plugins/iOS/liblzma.a.aggresive.zip | 0
Assets/Plugins/iOS/bitcode/liblzma.a-watchOS-bitcode.zip | 0
Assets/Plugins/x86/liblzma.dll | 0
Assets/Plugins/Android/libs/armeabi-v7a/liblzma.so.meta | 4
Assets/Plugins/iOS/bitcode/liblzma.meta | 9
Assets/Plugins/iOS/liblzma.a.fastest.zip | 0
Assets/Plugins/SevenZip/lzma.cs | 839 +++++++++++++++++++++++++++++++
Assets/Plugins/iOS/bitcode/liblzma.a-tvOS-bitcode.zip | 0
Assets/Plugins/iOS/bitcode/liblzma.a-aggressive-bitcode.zip.meta | 8
Assets/Plugins/iOS/liblzma.smallest.zip | 0
Assets/Plugins/iOS/bitcode/liblzma.a-tvOS-bitcode.zip.meta | 8
Assets/Plugins/liblzma.bundle/Contents/MacOS.meta | 7
Assets/Plugins/iOS/liblzma.a.fastest.zip.meta | 6
Assets/Plugins/x86/liblzma.so | 0
Assets/Plugins/liblzma.bundle/Contents/MacOS/liblzma.meta | 8
Assets/Plugins/x86.meta | 9
Assets/Plugins/x86_64/liblzma.dll | 0
Assets/Plugins/x86/liblzma.so.meta | 78 ++
Assets/Plugins/SevenZip.meta | 9
Assets/Plugins/Android/libs/x86_64/liblzma.zip | 0
Assets/Plugins/Android/libs/x86/liblzma.so.meta | 4
Assets/Plugins/iOS/liblzma.a-simulator.zip | 0
Assets/Plugins/liblzma.bundle.meta | 105 +++
Assets/Plugins/iOS/liblzma.a-simulator.zip.meta | 6
Assets/Plugins/iOS/liblzma.smallest.zip.meta | 6
Assets/Plugins/iOS/bitcode/liblzma.a-watchOS-bitcode.zip.meta | 8
Assets/test7zip.cs.meta | 4
Assets/Plugins/x86_64/liblzma.so | 0
Assets/Plugins/liblzma.bundle/Contents/Info.plist.meta | 8
Assets/Plugins/iOS/bitcode/liblzma.a-fastest-smallest-bitcode.zip | 0
Assets/Plugins/Android/libs/x86_64.meta | 7
Assets/Plugins/iOS/liblzma.a.meta | 21
Assets/Plugins/iOS/liblzma.a.fastest-smallest.zip.meta | 6
Assets/Plugins/liblzma.bundle/Contents/Info.plist | 46 +
/dev/null | 12
Assets/Plugins/x86_64/liblzma.dll.meta | 78 ++
Assets/Plugins/iOS/liblzma.a.fastest-smallest.zip | 0
Assets/Plugins/iOS/bitcode/libzipw.meta | 9
Assets/Plugins/iOS/bitcode/libfastlz.meta | 9
Assets/test7zip.cs | 33 +
56 files changed, 1,556 insertions(+), 14 deletions(-)
diff --git a/Assets/Editor/Tool/SevenZipUtility.cs b/Assets/Editor/Tool/SevenZipUtility.cs
deleted file mode 100644
index f21cca8..0000000
--- a/Assets/Editor/Tool/SevenZipUtility.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using System.IO;
-
-public class SevenZipUtility
-{
- static string m_SevenZipToolPath = string.Empty;
- static string sevenZipToolPath {
- get {
- if (string.IsNullOrEmpty(m_SevenZipToolPath))
- {
- if (Directory.Exists("C:/Program Files/7-Zip"))
- {
- m_SevenZipToolPath = "C:/Program Files/7-Zip";
- }
- else
- {
- m_SevenZipToolPath = "C:/Program Files (x86)/7-Zip";
- }
- }
-
- return m_SevenZipToolPath;
- }
- }
-
- public static void Compress(string from, string to)
- {
- if (File.Exists(to))
- {
- File.Delete(to);
- }
-
- var cmd = string.Format("\"{0}\\7z\" a {1} {2} -mx9", sevenZipToolPath, to, from);
- SystemCMD.RunCmd(cmd);
- }
-
- public static CompressProgress CompressStreamingAssets()
- {
- var files = new List<FileInfo>();
- FileExtersion.GetAllDirectoryFileInfos(Application.streamingAssetsPath, files);
-
- var progress = new CompressProgress();
- progress.total = files.Count;
-
- foreach (var item in files)
- {
- var fullName = item.FullName;
- var extension = Path.GetExtension(item.FullName);
- if (extension == ".meta")
- {
- continue;
- }
-
- var to = string.Empty;
- if (string.IsNullOrEmpty(extension))
- {
- to = fullName + ".7z";
- }
- else
- {
- to = fullName.Replace(extension, ".7z");
- }
-
- Compress(fullName, to);
- progress.complete++;
- }
-
- return progress;
- }
-
- public class CompressProgress
- {
- public int total;
- public int complete;
- public float progress {
- get {
- return complete / (float)total;
- }
- }
-
- public bool done {
- get {
- return complete >= total;
- }
- }
- }
-
-}
diff --git a/Assets/Editor/Tool/SystemCMD.cs b/Assets/Editor/Tool/SystemCMD.cs
deleted file mode 100644
index 33eb7d4..0000000
--- a/Assets/Editor/Tool/SystemCMD.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class SystemCMD
-{
- /// <summary>
- /// 璋冪敤缁堢鎵ц鍛戒护
- /// </summary>
- /// <param name="command"></param>
- /// <returns></returns>
- public static string RunCmd(string command)
- {
- System.Diagnostics.Process p = new System.Diagnostics.Process();
- p.StartInfo.FileName = "cmd.exe"; //纭畾绋嬪簭鍚�
- p.StartInfo.Arguments = "/c " + command; //纭畾绋嬪紡鍛戒护琛�
- p.StartInfo.UseShellExecute = false; //Shell鐨勪娇鐢�
- p.StartInfo.RedirectStandardInput = true; //閲嶅畾鍚戣緭鍏�
- p.StartInfo.RedirectStandardOutput = true; //閲嶅畾鍚戣緭鍑�
- p.StartInfo.RedirectStandardError = true; //閲嶅畾鍚戣緭鍑洪敊璇�
- p.StartInfo.CreateNoWindow = true; //璁剧疆缃笉鏄剧ず绀虹獥鍙�
- p.Start();
- p.WaitForExit();
- string err = p.StandardError.ReadToEnd();
- string standoutput = p.StandardOutput.ReadToEnd();
- if (string.IsNullOrEmpty(err))
- {
- return standoutput;
- }
- else
- {
- return err; //杈撳嚭鍑烘祦鍙栧緱鍛戒护琛岀粨鏋滄灉
- }
- }
-
-}
diff --git a/Assets/Editor/Tool/SystemCMD.cs.meta b/Assets/Editor/Tool/SystemCMD.cs.meta
deleted file mode 100644
index 2936b62..0000000
--- a/Assets/Editor/Tool/SystemCMD.cs.meta
+++ /dev/null
@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 6de2d4b13bfadaf419c682196b36e001
-timeCreated: 1541043601
-licenseType: Pro
-MonoImporter:
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Plugins/Android/libs/armeabi-v7a/liblzma.so b/Assets/Plugins/Android/libs/armeabi-v7a/liblzma.so
new file mode 100644
index 0000000..8234bec
--- /dev/null
+++ b/Assets/Plugins/Android/libs/armeabi-v7a/liblzma.so
Binary files differ
diff --git a/Assets/Plugins/Android/libs/armeabi-v7a/liblzma.so.meta b/Assets/Plugins/Android/libs/armeabi-v7a/liblzma.so.meta
new file mode 100644
index 0000000..c02a2ed
--- /dev/null
+++ b/Assets/Plugins/Android/libs/armeabi-v7a/liblzma.so.meta
@@ -0,0 +1,4 @@
+fileFormatVersion: 2
+guid: 47f1efaba9ae5384e860af5a2f4b81f4
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Android/libs/x86/liblzma.so b/Assets/Plugins/Android/libs/x86/liblzma.so
new file mode 100644
index 0000000..b8db604
--- /dev/null
+++ b/Assets/Plugins/Android/libs/x86/liblzma.so
Binary files differ
diff --git a/Assets/Plugins/Android/libs/x86/liblzma.so.meta b/Assets/Plugins/Android/libs/x86/liblzma.so.meta
new file mode 100644
index 0000000..3956efb
--- /dev/null
+++ b/Assets/Plugins/Android/libs/x86/liblzma.so.meta
@@ -0,0 +1,4 @@
+fileFormatVersion: 2
+guid: 30173cd337b2c3342807248d739cfef5
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Android/libs/x86_64.meta b/Assets/Plugins/Android/libs/x86_64.meta
new file mode 100644
index 0000000..1676797
--- /dev/null
+++ b/Assets/Plugins/Android/libs/x86_64.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1c82f02f593b1ea46b1f621db7963d42
+folderAsset: yes
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Android/libs/x86_64/liblzma.zip b/Assets/Plugins/Android/libs/x86_64/liblzma.zip
new file mode 100644
index 0000000..a5a0a21
--- /dev/null
+++ b/Assets/Plugins/Android/libs/x86_64/liblzma.zip
Binary files differ
diff --git a/Assets/Plugins/Android/libs/x86_64/liblzma.zip.meta b/Assets/Plugins/Android/libs/x86_64/liblzma.zip.meta
new file mode 100644
index 0000000..b60ebb8
--- /dev/null
+++ b/Assets/Plugins/Android/libs/x86_64/liblzma.zip.meta
@@ -0,0 +1,4 @@
+fileFormatVersion: 2
+guid: b33b02668b8329341b048c388739b940
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/SevenZip.meta b/Assets/Plugins/SevenZip.meta
new file mode 100644
index 0000000..3672382
--- /dev/null
+++ b/Assets/Plugins/SevenZip.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 12b6aa1b020583d4da0e4a2bf52bb7ff
+folderAsset: yes
+timeCreated: 1541063894
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/SevenZip/lzma.cs b/Assets/Plugins/SevenZip/lzma.cs
new file mode 100644
index 0000000..e3de0b5
--- /dev/null
+++ b/Assets/Plugins/SevenZip/lzma.cs
@@ -0,0 +1,839 @@
+using System;
+using System.Runtime.InteropServices;
+using UnityEngine;
+using System.Collections.Generic;
+using System.IO;
+
+
+#if (UNITY_WSA_8_1 || UNITY_WP_8_1 || UNITY_WINRT_8_1) && !UNITY_EDITOR
+ using File = UnityEngine.Windows.File;
+ #else
+ using File = System.IO.File;
+ #endif
+
+#if NETFX_CORE
+ #if UNITY_WSA_10_0
+ using System.IO.IsolatedStorage;
+ using static System.IO.Directory;
+ using static System.IO.File;
+ using static System.IO.FileStream;
+ #endif
+#endif
+
+
+public class lzma {
+
+ //if you want to be able to call the functions: get7zinfo, get7zSize, decode2Buffer from a thread set this string before to the Application.persistentDataPath !
+ public static string persitentDataPath="";
+
+#if !(UNITY_WSA || UNITY_WP_8_1) || UNITY_EDITOR
+
+ internal static int[] props = new int [7];
+ internal static bool defaultsSet = false;
+
+ //0 = level, /* 0 <= level <= 9, default = 5 */
+ //1 = dictSize, /* use (1 << N) or (3 << N). 4 KB < dictSize <= 128 MB */
+ //2 = lc, /* 0 <= lc <= 8, default = 3 */
+ //3 = lp, /* 0 <= lp <= 4, default = 0 */
+ //4 = pb, /* 0 <= pb <= 4, default = 2 */
+ //5 = fb, /* 5 <= fb <= 273, default = 32 */
+ //6 = numThreads /* 1 or 2, default = 2 */
+
+ //A function that sets the compression properties for the lzma compressor. Will affect the lzma alone file and the lzma buffer compression.
+ //A simple usage of this function is to call it only with the 1st parameter that sets the compression level: setProps(9);
+ //
+ //Multithread safe advice: call this function before starting any thread operations !!!
+ public static void setProps(int level = 5, int dictSize = 16777216, int lc = 3, int lp = 0, int pb = 2, int fb = 32, int numThreads = 2) {
+ defaultsSet = true;
+ props[0] = level;
+ props[1] = dictSize;
+ props[2] = lc;
+ props[3] = lp;
+ props[4] = pb;
+ props[5] = fb;
+ props[6] = numThreads;
+ }
+#endif
+
+
+#if (UNITY_IOS || UNITY_WEBGL || UNITY_IPHONE) && !UNITY_EDITOR
+
+ #if(!UNITY_WEBGL)
+ [DllImport("__Internal")]
+ public static extern int lsetPermissions(string filePath, string _user, string _group, string _other);
+ [DllImport("__Internal")]
+ private static extern int decompress7zip(string filePath, string exctractionPath, bool fullPaths, string entry, IntPtr progress, IntPtr FileBuffer, int FileBufferLength);
+ #endif
+
+ [DllImport("__Internal")]
+ private static extern int decompress7zip2(string filePath, string exctractionPath, bool fullPaths, string entry, IntPtr progress, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport("__Internal")]
+ private static extern int _getSize(string filePath, string tempPath, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport("__Internal")]
+ internal static extern int lzmaUtil(bool encode, string inPath, string outPath, IntPtr Props);
+ [DllImport("__Internal")]
+ internal static extern int decode2Buf(string filePath, string entry, IntPtr buffer, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport("__Internal")]
+ internal static extern void _releaseBuffer(IntPtr buffer);
+ [DllImport("__Internal")]
+ internal static extern IntPtr Lzma_Compress( IntPtr buffer, int bufferLength, bool makeHeader, ref int v, IntPtr Props);
+ [DllImport("__Internal")]
+ internal static extern int Lzma_Uncompress( IntPtr buffer, int bufferLength, int uncompressedSize, IntPtr outbuffer,bool useHeader);
+#endif
+
+#if UNITY_5_4_OR_NEWER
+ #if (UNITY_ANDROID || UNITY_STANDALONE_LINUX) && (!UNITY_EDITOR || UNITY_EDITOR_LINUX)
+ private const string libname = "lzma";
+ #elif UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX
+ private const string libname = "liblzma";
+ #endif
+#else
+ #if (UNITY_ANDROID || UNITY_STANDALONE_LINUX) && !UNITY_EDITOR
+ private const string libname = "lzma";
+ #endif
+ #if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX
+ private const string libname = "liblzma";
+ #endif
+#endif
+
+#if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_ANDROID || UNITY_STANDALONE_LINUX
+ #if (UNITY_STANDALONE_OSX || UNITY_STANDALONE_LINUX || UNITY_ANDROID || UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX)&& !UNITY_EDITOR_WIN
+ //set permissions of a file in user, group, other. Each string should contain any or all chars of "rwx".
+ //returns 0 on success
+ [DllImport(libname, EntryPoint = "lsetPermissions")]
+ internal static extern int lsetPermissions(string filePath, string _user, string _group, string _other);
+ #endif
+ [DllImport(libname, EntryPoint = "decompress7zip")]
+ internal static extern int decompress7zip(string filePath, string exctractionPath, bool fullPaths, string entry, IntPtr progress, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport(libname, EntryPoint = "decompress7zip2")]
+ internal static extern int decompress7zip2(string filePath, string exctractionPath, bool fullPaths, string entry, IntPtr progress, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport(libname, EntryPoint = "_getSize")]
+ internal static extern int _getSize(string filePath, string tempPath, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport(libname, EntryPoint = "lzmaUtil")]
+ internal static extern int lzmaUtil(bool encode, string inPath, string outPath, IntPtr Props);
+ [DllImport(libname, EntryPoint = "decode2Buf")]
+ internal static extern int decode2Buf(string filePath, string entry, IntPtr buffer, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport(libname, EntryPoint = "_releaseBuffer")]
+ internal static extern void _releaseBuffer(IntPtr buffer);
+ [DllImport(libname, EntryPoint = "Lzma_Compress")]
+ internal static extern IntPtr Lzma_Compress( IntPtr buffer, int bufferLength, bool makeHeader, ref int v, IntPtr Props);
+ [DllImport(libname, EntryPoint = "Lzma_Uncompress")]
+ internal static extern int Lzma_Uncompress( IntPtr buffer, int bufferLength, int uncompressedSize, IntPtr outbuffer,bool useHeader);
+#endif
+
+#if (UNITY_WP_8_1 || UNITY_WSA) && !UNITY_EDITOR
+ #if (UNITY_IOS || UNITY_IPHONE)
+ [DllImport("__Internal")]
+ internal static extern int lsetPermissions(string filePath, string _user, string _group, string _other);
+ #endif
+ #if UNITY_WSA_10_0
+ [DllImport("liblzma", EntryPoint = "decompress7zip")]
+ internal static extern int decompress7zip(string filePath, string exctractionPath, bool fullPaths, string entry, IntPtr progress, IntPtr FileBuffer, int FileBufferLength);
+ #endif
+ [DllImport("liblzma", EntryPoint = "decompress7zip2")]
+ internal static extern int decompress7zip2(string filePath, string exctractionPath, bool fullPaths, string entry, IntPtr progress, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport("liblzma", EntryPoint = "_getSize")]
+ internal static extern int _getSize(string filePath, string tempPath, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport("liblzma", EntryPoint = "decode2Buf")]
+ internal static extern int decode2Buf(string filePath, string entry, IntPtr buffer, IntPtr FileBuffer, int FileBufferLength);
+ [DllImport("liblzma", EntryPoint = "Lzma_Uncompress")]
+ internal static extern int Lzma_Uncompress( IntPtr buffer, int bufferLength, int uncompressedSize, IntPtr outbuffer,bool useHeader);
+#endif
+
+
+ // set permissions of a file in user, group, other.
+ // Each string should contain any or all chars of "rwx".
+ // returns 0 on success
+ public static int setFilePermissions(string filePath, string _user, string _group, string _other){
+ #if (UNITY_STANDALONE_OSX || UNITY_STANDALONE_LINUX || UNITY_ANDROID || UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX || UNITY_IOS || UNITY_IPHONE) && !UNITY_EDITOR_WIN
+ return lsetPermissions(filePath, _user, _group, _other);
+ #else
+ return -1;
+ #endif
+ }
+
+ // An integer variable to store the total number of files in a 7z archive, excluding the folders.
+ public static int trueTotalFiles = 0;
+
+ //ERROR CODES:
+ // 1 : OK
+ // 2 : Could not find requested file in archive
+ // -1 : Could not open input(7z) file
+ // -2 : Decoder doesn't support this archive
+ // -3 : Can not allocate memory
+ // -4 : CRC error of 7z file
+ // -5 : Unknown error
+ // -6 : Can not open output file (usually when the path to write to, is invalid)
+ // -7 : Can not write output file
+ // -8 : Can not close output file
+
+ //The most common use of this library is to download a 7z file in your Application.persistentDataPath directory
+ //and decompress it in a folder that you want.
+
+ //int lz=lzma.doDecompress7zip(Application.persistentDataPath+"/myCompresedFile.7z",Application.persistentDataPath+"/myUncompressedFiles/");
+
+ //WSA8.1 does not support large files.
+
+ //filePath : the full path to the archive, including the archives name. (/myPath/myArchive.7z)
+ //exctractionPath : the path in where you want your files to be extracted
+ //progress : a single item integer array to get the progress of the extracted files (use this function when calling from a separate thread, otherwise call the 2nd implementation)
+ // : (for ios this integer is not properly updated. So we use the lzma.getProgressCount() function to get the progress. See example.)
+ //largeFiles : set this to true if you are extracting files larger then 30-40 Mb. It is slower though but prevents crashing your app when extracting large files!
+ //fullPaths : set this to true if you want to keep the folder structure of the 7z file.
+ //entry : set the name of a single file file you want to extract from your archive. If the file resides in a folder, the full path should be added.
+ // (for example game/meshes/small/table.mesh )
+ //FileBuffer : A buffer that holds a 7zip file. When assigned the function will decompress from this buffer and will ignore the filePath. (Linux, iOS, Android, MacOSX)
+ //use this function from a separate thread to get the progress of the extracted files in the referenced 'progress' integer.
+ //
+ public static int doDecompress7zip(string filePath, string exctractionPath, int [] progress, bool largeFiles=false, bool fullPaths=false, string entry=null, byte[] FileBuffer=null){
+
+ int res = 0;
+ GCHandle ibuf = GCHandle.Alloc(progress, GCHandleType.Pinned);
+
+ #if (UNITY_IPHONE || UNITY_IOS || UNITY_STANDALONE_OSX || UNITY_ANDROID || UNITY_STANDALONE_LINUX || UNITY_EDITOR) && !UNITY_EDITOR_WIN
+
+ if(FileBuffer != null) {
+ GCHandle fbuf = GCHandle.Alloc(FileBuffer, GCHandleType.Pinned);
+
+
+ if (largeFiles){
+ res = decompress7zip(null, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject() , fbuf.AddrOfPinnedObject(), FileBuffer.Length);
+ }else{
+ res = decompress7zip2(null, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject() , fbuf.AddrOfPinnedObject(), FileBuffer.Length);
+ }
+ fbuf.Free(); ibuf.Free(); return res;
+ } else {
+ if (largeFiles){
+ res = decompress7zip(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject() , IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ }else{
+ res = decompress7zip2(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject() , IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ }
+ }
+
+ #endif
+
+ #if (!UNITY_WSA && !UNITY_WEBGL && !UNITY_EDITOR_OSX && !UNITY_STANDALONE_LINUX && !UNITY_ANDROID && !UNITY_IOS) || UNITY_EDITOR_WIN || UNITY_WSA_10_0
+ if (largeFiles){
+ res = decompress7zip(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ }else{
+ res = decompress7zip2(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ }
+ #endif
+
+ #if (UNITY_WSA_8_1 || UNITY_WP_8_1 || UNITY_WINRT_8_1 || UNITY_WEBGL) && !UNITY_EDITOR
+ res = decompress7zip2(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ #endif
+ }
+
+ //same as above only the progress integer is a local variable.
+ //use this when you don't want to get the progress of the extracted files and when not calling the function from a separate thread.
+ public static int doDecompress7zip(string filePath, string exctractionPath, bool largeFiles = false, bool fullPaths = false, string entry = null, byte[] FileBuffer=null)
+ {
+ //make a check if the last '/' exists at the end of the exctractionPath and add it if it is missing
+ if (@exctractionPath.Substring(@exctractionPath.Length - 1, 1) != "/") { @exctractionPath += "/"; }
+
+ int[] progress = new int[1];
+ GCHandle ibuf = GCHandle.Alloc(progress, GCHandleType.Pinned);
+ int res = 0;
+
+ #if (UNITY_IPHONE || UNITY_IOS || UNITY_STANDALONE_OSX || UNITY_ANDROID || UNITY_STANDALONE_LINUX || UNITY_EDITOR) && !UNITY_EDITOR_WIN
+ if(FileBuffer != null) {
+ GCHandle fbuf = GCHandle.Alloc(FileBuffer, GCHandleType.Pinned);
+
+
+ if (largeFiles){
+ res = decompress7zip(null, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), fbuf.AddrOfPinnedObject(), FileBuffer.Length);
+ }else{
+ res = decompress7zip2(null, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), fbuf.AddrOfPinnedObject(), FileBuffer.Length);
+ }
+ fbuf.Free(); ibuf.Free(); return res;
+ } else {
+ if (largeFiles){
+ res = decompress7zip(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ }else{
+ res = decompress7zip2(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ }
+ }
+ #endif
+
+ #if (!UNITY_WSA && !UNITY_WEBGL && !UNITY_EDITOR_OSX && !UNITY_STANDALONE_LINUX && !UNITY_ANDROID && !UNITY_IOS) || UNITY_EDITOR_WIN || UNITY_WSA_10_0
+ if (largeFiles){
+ res = decompress7zip(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ }
+ else{
+ res = decompress7zip2(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ }
+ #endif
+
+ #if (UNITY_WSA_8_1 || UNITY_WP_8_1 || UNITY_WINRT_8_1 || UNITY_WEBGL) && !UNITY_EDITOR
+ res = decompress7zip2(@filePath, @exctractionPath, fullPaths, entry, ibuf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ ibuf.Free(); return res;
+ #endif
+ }
+
+
+#if !(UNITY_WSA || UNITY_WP_8_1) || UNITY_EDITOR
+ //ERROR CODES (for both encode/decode LzmaUtil functions):
+ // 1 : OK
+ // -10 : Can not read input file
+ // -11 : Can not write output file
+ // -12 : Can not allocate memory
+ // -13 : Data error
+
+ //This function encodes a single archive in lzma alone format.
+ //inPath : the file to be encoded. (use full path + file name)
+ //outPath : the .lzma file that will be produced. (use full path + file name)
+ //
+ //You can set the compression properties by calling the setProps function before.
+ //setProps(9) for example will set compression evel to highest level.
+ public static int LzmaUtilEncode(string inPath, string outPath){
+ if (!defaultsSet) setProps();
+ GCHandle prps = GCHandle.Alloc(props, GCHandleType.Pinned);
+ int res = lzmaUtil(true, @inPath, @outPath, prps.AddrOfPinnedObject());
+ prps.Free();
+ return res;
+ }
+
+
+ //This function decodes a single archive in lzma alone format.
+ //inPath : the .lzma file that will be decoded. (use full path + file name)
+ //outPath : the decoded file. (use full path + file name)
+ public static int LzmaUtilDecode(string inPath, string outPath){
+ return lzmaUtil(false, @inPath, @outPath, IntPtr.Zero);
+ }
+
+#endif
+
+ //Lists get filled with filenames (including path if the file is in a folder) and uncompressed file sizes
+ public static List <string> ninfo = new List<string>();//filenames
+ public static List <long> sinfo = new List<long>();//file sizes
+
+ //this function fills the ArrayLists with the filenames and file sizes that are in the 7zip file
+ //returns : the total size in bytes of the files in the 7z archive
+ //
+ //filePath : the full path to the archive, including the archives name. (/myPath/myArchive.7z)
+ //tempPath : (optional) a temp path that will be used to write the files info (otherwise the path of the 7z archive will be used)
+ // : this is useful when your 7z archive resides in a read only location.
+ // : the tempPath should be in this form: 'dir/dir/myTempLog' with no slash in the end. The last name will be used as the log's filename.
+ //FileBuffer : A buffer that holds a 7zip file. When assigned the function will read from this buffer and will ignore the filePath. (Linux, iOS, Android, MacOSX)
+ //
+ //trueTotalFiles is an integer variable to store the total number of files in a 7z archive, excluding the folders.
+ public static long get7zInfo(string filePath, string tempPath = null, byte[] FileBuffer = null){
+
+ ninfo.Clear(); sinfo.Clear();
+ trueTotalFiles = 0;
+ int res = -1;
+ string logPath = "";
+
+ #if !NETFX_CORE
+ if (@tempPath == null) {
+ if(persitentDataPath.Length>0) logPath = @persitentDataPath + "/sevenZip.log"; else logPath = @Application.persistentDataPath + "/sevenZip.log";
+ }else { logPath = @tempPath; }
+ #endif
+ //for WSA, logPath should always be: Application.persistentDataPath + "/sevenZip.log";
+ #if NETFX_CORE
+ #if UNITY_WSA_10_0
+ if(persitentDataPath.Length>0) logPath = @persitentDataPath + "/sevenZip.log"; else logPath = @Application.persistentDataPath + "/sevenZip.log";
+ #endif
+ #if UNITY_WSA_8_1 || UNITY_WP_8_1 || UNITY_WINRT_8_1
+ if(persitentDataPath.Length>0) logPath = @persitentDataPath + "/sevenZip.log"; else logPath = @UnityEngine.Windows.Directory.localFolder + "/sevenZip.log";
+ #endif
+ #endif
+
+ if (File.Exists(logPath + ".txt")) File.Delete(logPath + ".txt");
+
+ #if (UNITY_IPHONE || UNITY_IOS || UNITY_STANDALONE_OSX || UNITY_ANDROID || UNITY_STANDALONE_LINUX || UNITY_EDITOR) && !UNITY_EDITOR_WIN
+ if(FileBuffer != null) {
+ GCHandle fbuf = GCHandle.Alloc(FileBuffer, GCHandleType.Pinned);
+ res = _getSize(null, logPath, fbuf.AddrOfPinnedObject(), FileBuffer.Length);
+ fbuf.Free();
+ }else {
+ res = _getSize(@filePath, logPath, IntPtr.Zero, 0);
+ }
+ #else
+ res = _getSize(@filePath, logPath, IntPtr.Zero, 0);
+ #endif
+
+ if (res == -1) { /*Debug.Log("Input file not found.");*/ return -1; }
+
+ if (!File.Exists(logPath + ".txt")) {/* Debug.Log("Info file not found.");*/ return -3; }
+
+ #if !NETFX_CORE
+ StreamReader r = new StreamReader(logPath + ".txt");
+ #endif
+ #if NETFX_CORE
+ #if UNITY_WSA_10_0
+ IsolatedStorageFile ipath = IsolatedStorageFile.GetUserStoreForApplication();
+ StreamReader r = new StreamReader(new IsolatedStorageFileStream("sevenZip.log.txt", FileMode.Open, ipath));
+ #endif
+ #if UNITY_WSA_8_1 || UNITY_WP_8_1 || UNITY_WINRT_8_1
+ var data = UnityEngine.Windows.File.ReadAllBytes(logPath + ".txt");
+ string ss = System.Text.Encoding.UTF8.GetString(data,0,data.Length);
+ StringReader r = new StringReader(ss);
+ #endif
+ #endif
+
+ string line;
+ string[] rtt;
+ long t = 0, sum = 0;
+
+ while ((line = r.ReadLine()) != null)
+ {
+ rtt = line.Split('|');
+ ninfo.Add(rtt[0]);
+ long.TryParse(rtt[1], out t);
+ sum += t;
+ sinfo.Add(t);
+ if (t > 0) trueTotalFiles++;
+ }
+
+ #if !NETFX_CORE
+ r.Close();
+ #endif
+ r.Dispose();
+ File.Delete(logPath + ".txt");
+
+ return sum;
+ }
+
+
+ //this function returns the uncompressed file size of a given file in the 7z archive if specified,
+ //otherwise it will return the total uncompressed size of all the files in the archive.
+ //
+ //If you don't fill the filePath parameter it will assume that the get7zInfo function has already been called.
+ //
+ //
+ //filePath : the full path to the archive, including the archives name. (/myPath/myArchive.7z)
+ // : if you call the function with filePath as null, it will try to find file sizes from the last call.
+ //fileName : the file name we want to get the file size (if it resides in a folder add the folder path also)
+ //tempPath : (optional) a temp path that will be used to write the files info (otherwise the path of the 7z archive will be used)
+ // : this is useful when your 7z archive resides in a read only location.
+ // : the tempPath should be in this form: 'dir/dir/myTempLog' with no slash in the end. The last name will be used as the log's filename.
+ //FileBuffer : A buffer that holds a 7zip file. When assigned the function will read from this buffer and will ignore the filePath. (Linux, iOS, Android, MacOSX)
+ public static long get7zSize( string filePath=null, string fileName=null, string tempPath=null, byte[] FileBuffer=null){
+
+ if(filePath!=null){
+ if(get7zInfo(@filePath, @tempPath, FileBuffer) < 0){ return -1;}
+ }
+
+ if(ninfo == null){
+ if(ninfo.Count==0) { return -1; }
+ }
+
+ long sum=0;
+
+ if(fileName!=null){
+ for(int i=0; i<ninfo.Count; i++){
+ if(ninfo[i].ToString() == fileName){
+ return (long)sinfo[i];
+ }
+ }
+ }else{
+ for(int i=0; i<ninfo.Count; i++){
+ sum += (long)sinfo[i];
+ }
+ return sum;
+ }
+ return -1;//nothing was found
+ }
+
+
+
+ //A function to decode a specific archive in a 7z archive to a byte buffer
+ //
+ //filePath : the full path to the 7z archive
+ //entry : the file name to decode to a buffer. If the file resides in a folder, the full path should be used.
+ //tempPath : (optional) a temp path that will be used to write the files info (otherwise the path of the 7z archive will be used)
+ // : this is useful when your 7z archive resides in a read only location.
+ // : the tempPath should be in this form: 'dir/dir/myTempLog' with no slash in the end. The last name will be used as the log's filename.
+ //FileBuffer : A buffer that holds a 7zip file. When assigned the function will read from this buffer and will ignore the filePath. (Linux, iOS, Android, MacOSX)
+ public static byte[] decode2Buffer( string filePath, string entry, string tempPath=null, byte[] FileBuffer=null){
+
+ int bufs = (int)get7zSize( @filePath, entry, @tempPath,FileBuffer );
+ if (bufs <= 0) return null;//entry error or it does not exist
+ byte[] nb = new byte[bufs];
+ int res = 0;
+
+ GCHandle dec2buf = GCHandle.Alloc(nb, GCHandleType.Pinned);
+
+ #if (UNITY_IPHONE || UNITY_IOS || UNITY_STANDALONE_OSX || UNITY_ANDROID || UNITY_STANDALONE_LINUX || UNITY_EDITOR) && !UNITY_EDITOR_WIN
+ if(FileBuffer != null) {
+ GCHandle fbuf = GCHandle.Alloc(FileBuffer, GCHandleType.Pinned);
+ res = decode2Buf(null, entry, dec2buf.AddrOfPinnedObject(), fbuf.AddrOfPinnedObject(), FileBuffer.Length);
+ fbuf.Free();
+ }else {
+ res = decode2Buf(@filePath, entry, dec2buf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ }
+ #else
+ res = decode2Buf(@filePath, entry, dec2buf.AddrOfPinnedObject(), IntPtr.Zero, 0);
+ #endif
+
+ dec2buf.Free();
+ if(res==1){ return nb;}
+ else {nb=null; return null; }
+
+ }
+
+#if !(UNITY_WSA || UNITY_WP_8_1) || UNITY_EDITOR
+
+ //This function encodes inBuffer to lzma alone format into the outBuffer provided.
+ //The buffer can be saved also into a file and can be opened by applications that opens the lzma alone format.
+ //This buffer can be uncompressed by the decompressBuffer function.
+ //Returns true if success
+ //if makeHeader==false then the lzma 13 bytes header will not be added to the buffer.
+ //
+ //You can set the compression properties by calling the setProps function before.
+ //setProps(9) for example will set compression level to the highest level.
+ //
+ public static bool compressBuffer(byte[] inBuffer, ref byte[] outBuffer, bool makeHeader=true){
+
+ if (!defaultsSet) setProps();
+ GCHandle prps = GCHandle.Alloc(props, GCHandleType.Pinned);
+
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+ IntPtr ptr;
+
+ int res = 0;
+
+ ptr = Lzma_Compress(cbuf.AddrOfPinnedObject(), inBuffer.Length, makeHeader, ref res, prps.AddrOfPinnedObject());
+
+ cbuf.Free(); prps.Free();
+
+ if(res==0 || ptr==IntPtr.Zero){_releaseBuffer(ptr); return false;}
+
+ Array.Resize(ref outBuffer,res);
+ Marshal.Copy(ptr, outBuffer, 0, res);
+
+ _releaseBuffer(ptr);
+
+ return true;
+ }
+
+
+ //same as the above function, only it compresses a part of the input buffer.
+ //
+ //inBufferPartialLength: the size of the input buffer that should be compressed
+ //inBufferPartialIndex: the offset of the input buffer from where the compression will start
+ //
+ public static bool compressBufferPartial(byte[] inBuffer, int inBufferPartialIndex, int inBufferPartialLength, ref byte[] outBuffer, bool makeHeader = true)
+ {
+ if(inBufferPartialIndex + inBufferPartialLength > inBuffer.Length) return false;
+
+ if (!defaultsSet) setProps();
+ GCHandle prps = GCHandle.Alloc(props, GCHandleType.Pinned);
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+
+ IntPtr ptr;
+ IntPtr ptrPartial;
+
+ int res = 0;
+
+ ptrPartial = new IntPtr(cbuf.AddrOfPinnedObject().ToInt64() + inBufferPartialIndex);
+
+ ptr = Lzma_Compress(ptrPartial, inBufferPartialLength, makeHeader, ref res, prps.AddrOfPinnedObject());
+
+ cbuf.Free();
+
+ if (res == 0 || ptr == IntPtr.Zero) { _releaseBuffer(ptr); return false; }
+
+ Array.Resize(ref outBuffer, res);
+ Marshal.Copy(ptr, outBuffer, 0, res);
+
+ _releaseBuffer(ptr);
+
+ return true;
+ }
+
+
+ //same as compressBufferPartial, only this function will compress the data into a fixed size buffer
+ //the compressed size is returned so you can manipulate it at will.
+ public static int compressBufferPartialFixed(byte[] inBuffer, int inBufferPartialIndex, int inBufferPartialLength, ref byte[] outBuffer, bool safe = true, bool makeHeader = true)
+ {
+ if(inBufferPartialIndex + inBufferPartialLength > inBuffer.Length) return 0;
+
+ if (!defaultsSet) setProps();
+ GCHandle prps = GCHandle.Alloc(props, GCHandleType.Pinned);
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+
+ IntPtr ptr;
+ IntPtr ptrPartial;
+
+ int res = 0;
+
+ ptrPartial = new IntPtr(cbuf.AddrOfPinnedObject().ToInt64() + inBufferPartialIndex);
+
+ ptr = Lzma_Compress(ptrPartial, inBufferPartialLength, makeHeader, ref res, prps.AddrOfPinnedObject());
+
+ cbuf.Free();
+
+ if (res == 0 || ptr == IntPtr.Zero) { _releaseBuffer(ptr); return 0; }
+
+ //if the compressed buffer is larger then the fixed size buffer we use:
+ //1. then write only the data that fit in it.
+ //2. or we return 0.
+ //It depends on if we set the safe flag to true or not.
+ if(res>outBuffer.Length) {
+ if(safe){ _releaseBuffer(ptr); return 0; } else { res = outBuffer.Length; }
+ }
+
+ Marshal.Copy(ptr, outBuffer, 0, res);
+
+ _releaseBuffer(ptr);
+
+ return res;
+ }
+
+
+ //same as the compressBuffer function, only this function will put the result in a fixed size buffer to avoid memory allocations.
+ //the compressed size is returned so you can manipulate it at will.
+ public static int compressBufferFixed(byte[] inBuffer, ref byte[] outBuffer, bool safe = true, bool makeHeader=true){
+
+ if (!defaultsSet) setProps();
+ GCHandle prps = GCHandle.Alloc(props, GCHandleType.Pinned);
+
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+ IntPtr ptr;
+
+ int res = 0;
+
+ ptr = Lzma_Compress(cbuf.AddrOfPinnedObject(), inBuffer.Length, makeHeader, ref res, prps.AddrOfPinnedObject());
+
+ cbuf.Free(); prps.Free();
+ if(res==0 || ptr==IntPtr.Zero){_releaseBuffer(ptr); return 0;}
+
+ //if the compressed buffer is larger then the fixed size buffer we use:
+ //1. then write only the data that fit in it.
+ //2. or we return 0.
+ //It depends on if we set the safe flag to true or not.
+ if(res>outBuffer.Length) {
+ if(safe){ _releaseBuffer(ptr); return 0; } else { res = outBuffer.Length; }
+ }
+
+ Marshal.Copy(ptr, outBuffer, 0, res);
+
+ _releaseBuffer(ptr);
+
+ return res;
+ }
+
+#endif
+
+
+
+
+
+ //This function will decompress a compressed asset bundle.
+ //It finds the magic number of the lzma format and extracts from there.
+ //
+ //inBuffer: the buffer that stores a compressed asset bundle.
+ //outBuffer: a referenced buffer where the asset bundle will be uncompressed.
+ //The error codes
+ /*
+ OK 0
+
+ ERROR_DATA 1
+ ERROR_MEM 2
+ ERROR_UNSUPPORTED 4
+ ERROR_PARAM 5
+ ERROR_INPUT_EOF 6
+ ERROR_OUTPUT_EOF 7
+ ERROR_FAIL 11
+ ERROR_THREAD 12
+ */
+ public static int decompressAssetBundle(byte[] inBuffer, ref byte[] outbuffer){
+
+ int offset = 0;
+
+ for(int i=0; i<inBuffer.Length; i++) {
+ if(i>1024) break;
+ if(inBuffer[i] == 0x5d) {
+ if(inBuffer[i+1] == 0x00) {
+ if(inBuffer[i+2] == 0x00) {
+ if(inBuffer[i+3] == 0x08) {
+ offset = i; break;
+ }
+ }
+ }
+ }
+ }
+
+ if(offset==0 || offset>1024) return 4;
+
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+ IntPtr ptrBundle = new IntPtr(cbuf.AddrOfPinnedObject().ToInt64() + offset);
+ int uncompressedSize = (int)BitConverter.ToUInt64(inBuffer,offset+5);
+ if(uncompressedSize<0) { cbuf.Free(); return 4; }
+ Array.Resize(ref outbuffer, uncompressedSize);
+ GCHandle obuf = GCHandle.Alloc(outbuffer, GCHandleType.Pinned);
+
+ int res = Lzma_Uncompress(ptrBundle, inBuffer.Length-offset, uncompressedSize, obuf.AddrOfPinnedObject(), true);
+
+ cbuf.Free();
+ obuf.Free();
+
+ //if(res!=0){/*Debug.Log("ERROR: "+res.ToString());*/ return res; }
+
+ return res;
+ }
+
+
+ /*
+ //this will decompress an lzma alone format file.
+ public static int decompressLzmaAlone(string inFile, string outFile){
+
+ if(File.Exists(inFile)) {
+ var inBuffer = File.ReadAllBytes(inFile);
+
+ int offset = 0;
+
+ for(int i=0; i<inBuffer.Length; i++) {
+ if(i>16) break;
+ if(inBuffer[i] == 0x5d) {
+ if(inBuffer[i+1] == 0x00) {
+ if(inBuffer[i+2] == 0x00) {
+ if(inBuffer[i+3] == 0x00) {
+ offset = i; break;
+ }
+ }
+ }
+ }
+ }
+
+ if(offset>16) { inBuffer=null; return 4; }
+
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+ IntPtr ptrBundle = new IntPtr(cbuf.AddrOfPinnedObject().ToInt64() + offset);
+ int uncompressedSize = (int)BitConverter.ToUInt64(inBuffer,offset+5);
+ if(uncompressedSize<0) { cbuf.Free(); return 4; }
+ byte[] outBuffer = new byte[uncompressedSize];
+ GCHandle obuf = GCHandle.Alloc(outBuffer, GCHandleType.Pinned);
+
+ int res = Lzma_Uncompress(ptrBundle, inBuffer.Length-offset, uncompressedSize, obuf.AddrOfPinnedObject(), true);
+
+ cbuf.Free();
+ obuf.Free();
+
+ File.WriteAllBytes(outFile, outBuffer);
+
+ Array.Resize(ref outBuffer, 0);
+ Array.Resize(ref inBuffer, 0);
+
+ outBuffer = null;
+ inBuffer = null;
+
+ GC.Collect();
+
+ return res;
+ } else {
+ return -1;
+ }
+ }
+ */
+
+
+ //This function decompresses an lzma compressed byte buffer.
+ //If the useHeader flag is false you have to provide the uncompressed size of the buffer via the customLength integer.
+ //if res==0 operation was successful
+ //The error codes
+ /*
+ OK 0
+
+ ERROR_DATA 1
+ ERROR_MEM 2
+ ERROR_UNSUPPORTED 4
+ ERROR_PARAM 5
+ ERROR_INPUT_EOF 6
+ ERROR_OUTPUT_EOF 7
+ ERROR_FAIL 11
+ ERROR_THREAD 12
+ */
+ public static int decompressBuffer(byte[] inBuffer, ref byte[] outbuffer, bool useHeader=true, int customLength=0){
+
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+ int uncompressedSize = 0;
+
+ //if the lzma header will be used to extract the uncompressed size of the buffer. If the buffer does not have a header
+ //provide the known uncompressed size through the customLength integer.
+ if(useHeader) uncompressedSize = (int)BitConverter.ToUInt64(inBuffer,5); else uncompressedSize = customLength;
+
+ Array.Resize(ref outbuffer, uncompressedSize);
+
+ GCHandle obuf = GCHandle.Alloc(outbuffer, GCHandleType.Pinned);
+
+ int res = Lzma_Uncompress(cbuf.AddrOfPinnedObject(), inBuffer.Length, uncompressedSize, obuf.AddrOfPinnedObject(), useHeader);
+
+ cbuf.Free();
+ obuf.Free();
+
+ //if(res!=0){/*Debug.Log("ERROR: "+res.ToString());*/ return res; }
+
+ return res;
+ }
+
+ public static byte[] decompressBuffer(byte[] inBuffer, bool useHeader=true, int customLength=0){
+
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+ int uncompressedSize = 0;
+
+ //if the lzma header will be used to extract the uncompressed size of the buffer. If the buffer does not have a header
+ //provide the known uncompressed size through the customLength integer.
+ if(useHeader) uncompressedSize = (int)BitConverter.ToUInt64(inBuffer,5); else uncompressedSize = customLength;
+
+ byte[] outbuffer = new byte[uncompressedSize];
+
+ GCHandle obuf = GCHandle.Alloc(outbuffer, GCHandleType.Pinned);
+
+ int res = Lzma_Uncompress(cbuf.AddrOfPinnedObject(), inBuffer.Length, uncompressedSize, obuf.AddrOfPinnedObject(), useHeader);
+
+ cbuf.Free();
+ obuf.Free();
+
+ if(res!=0){/*Debug.Log("ERROR: "+res.ToString());*/ return null; }
+
+ return outbuffer;
+ }
+
+
+ //same as above function. Only this one outputs to a buffer of fixed which size isn't resized to avoid memory allocations.
+ //The fixed buffer should have a size that will be able to hold the incoming decompressed data.
+ //returns the uncompressed size.
+ public static int decompressBufferFixed(byte[] inBuffer, ref byte[] outbuffer, bool safe = true, bool useHeader=true, int customLength=0){
+
+ int uncompressedSize = 0;
+
+ //if the lzma header will be used to extract the uncompressed size of the buffer. If the buffer does not have a header
+ //provide the known uncompressed size through the customLength integer.
+ if(useHeader) uncompressedSize = (int)BitConverter.ToUInt64(inBuffer,5); else uncompressedSize = customLength;
+
+ //Check if the uncompressed size is bigger then the size of the fixed buffer. Then:
+ //1. write only the data that fit in it.
+ //2. or return a negative number.
+ //It depends on if we set the safe flag to true or not.
+ if(uncompressedSize > outbuffer.Length) {
+ if(safe) return -101; else uncompressedSize = outbuffer.Length;
+ }
+
+ GCHandle cbuf = GCHandle.Alloc(inBuffer, GCHandleType.Pinned);
+ GCHandle obuf = GCHandle.Alloc(outbuffer, GCHandleType.Pinned);
+
+ int res = Lzma_Uncompress(cbuf.AddrOfPinnedObject(), inBuffer.Length, uncompressedSize, obuf.AddrOfPinnedObject(), useHeader);
+
+ cbuf.Free();
+ obuf.Free();
+
+ if(res!=0){/*Debug.Log("ERROR: "+res.ToString());*/ return -res; }
+
+ return uncompressedSize;
+ }
+
+}
+
diff --git a/Assets/Plugins/SevenZip/lzma.cs.meta b/Assets/Plugins/SevenZip/lzma.cs.meta
new file mode 100644
index 0000000..f273e36
--- /dev/null
+++ b/Assets/Plugins/SevenZip/lzma.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 13c1c59b80961f74e9c2c894f0961517
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/iOS/bitcode.meta b/Assets/Plugins/iOS/bitcode.meta
new file mode 100644
index 0000000..ef7aec7
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: aea70e06332fd3e4cb4798606c87a13e
+folderAsset: yes
+timeCreated: 1452862552
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/libbrotli.meta b/Assets/Plugins/iOS/bitcode/libbrotli.meta
new file mode 100644
index 0000000..39892f3
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/libbrotli.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: d5a3daf797c64c94c81b903bc20465b7
+folderAsset: yes
+timeCreated: 1455164213
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/libfastlz.meta b/Assets/Plugins/iOS/bitcode/libfastlz.meta
new file mode 100644
index 0000000..26f32fa
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/libfastlz.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 168c23f7b2a985844bb1d75f8f6def1c
+folderAsset: yes
+timeCreated: 1452858581
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/liblz4.meta b/Assets/Plugins/iOS/bitcode/liblz4.meta
new file mode 100644
index 0000000..16f59f8
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblz4.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f08f107c1bc95c44e88b396f562d726e
+folderAsset: yes
+timeCreated: 1452858581
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.a-aggressive-bitcode.zip b/Assets/Plugins/iOS/bitcode/liblzma.a-aggressive-bitcode.zip
new file mode 100644
index 0000000..951cbfe
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.a-aggressive-bitcode.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.a-aggressive-bitcode.zip.meta b/Assets/Plugins/iOS/bitcode/liblzma.a-aggressive-bitcode.zip.meta
new file mode 100644
index 0000000..b0925db
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.a-aggressive-bitcode.zip.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b2699330b724ffc4d92e81ab4554b568
+timeCreated: 1452855403
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.a-fastest-smallest-bitcode.zip b/Assets/Plugins/iOS/bitcode/liblzma.a-fastest-smallest-bitcode.zip
new file mode 100644
index 0000000..698b4ee
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.a-fastest-smallest-bitcode.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.a-fastest-smallest-bitcode.zip.meta b/Assets/Plugins/iOS/bitcode/liblzma.a-fastest-smallest-bitcode.zip.meta
new file mode 100644
index 0000000..fff64e7
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.a-fastest-smallest-bitcode.zip.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3e3113bc8d3c63344a4276ea5cacdbcc
+timeCreated: 1452855403
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.a-tvOS-bitcode.zip b/Assets/Plugins/iOS/bitcode/liblzma.a-tvOS-bitcode.zip
new file mode 100644
index 0000000..94d2749
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.a-tvOS-bitcode.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.a-tvOS-bitcode.zip.meta b/Assets/Plugins/iOS/bitcode/liblzma.a-tvOS-bitcode.zip.meta
new file mode 100644
index 0000000..6aba071
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.a-tvOS-bitcode.zip.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 527d7a6912edd7f4998b09a787646512
+timeCreated: 1452855403
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.a-watchOS-bitcode.zip b/Assets/Plugins/iOS/bitcode/liblzma.a-watchOS-bitcode.zip
new file mode 100644
index 0000000..6ff6326
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.a-watchOS-bitcode.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.a-watchOS-bitcode.zip.meta b/Assets/Plugins/iOS/bitcode/liblzma.a-watchOS-bitcode.zip.meta
new file mode 100644
index 0000000..41e3cc8
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.a-watchOS-bitcode.zip.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: afeda9bca77bb774f812793c304fc961
+timeCreated: 1452855403
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/liblzma.meta b/Assets/Plugins/iOS/bitcode/liblzma.meta
new file mode 100644
index 0000000..4e02738
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/liblzma.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 95f44f25645ad824490021beb8785cc2
+folderAsset: yes
+timeCreated: 1452858581
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/bitcode/libzipw.meta b/Assets/Plugins/iOS/bitcode/libzipw.meta
new file mode 100644
index 0000000..3daacf7
--- /dev/null
+++ b/Assets/Plugins/iOS/bitcode/libzipw.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f03c7c5e39169574593b46ac54fd5531
+folderAsset: yes
+timeCreated: 1452858581
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/liblzma.a b/Assets/Plugins/iOS/liblzma.a
new file mode 100644
index 0000000..7db8e56
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a
Binary files differ
diff --git a/Assets/Plugins/iOS/liblzma.a-simulator.zip b/Assets/Plugins/iOS/liblzma.a-simulator.zip
new file mode 100644
index 0000000..ea159ba
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a-simulator.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/liblzma.a-simulator.zip.meta b/Assets/Plugins/iOS/liblzma.a-simulator.zip.meta
new file mode 100644
index 0000000..0febae1
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a-simulator.zip.meta
@@ -0,0 +1,6 @@
+fileFormatVersion: 2
+guid: 8df3da085354f294c9f9e57a31ba34cf
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/liblzma.a.aggresive.zip b/Assets/Plugins/iOS/liblzma.a.aggresive.zip
new file mode 100644
index 0000000..90a8925
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a.aggresive.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/liblzma.a.aggresive.zip.meta b/Assets/Plugins/iOS/liblzma.a.aggresive.zip.meta
new file mode 100644
index 0000000..14cc05f
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a.aggresive.zip.meta
@@ -0,0 +1,6 @@
+fileFormatVersion: 2
+guid: 105d619dcc562f943acdd38091063327
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/liblzma.a.fastest-smallest.zip b/Assets/Plugins/iOS/liblzma.a.fastest-smallest.zip
new file mode 100644
index 0000000..c7f0790
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a.fastest-smallest.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/liblzma.a.fastest-smallest.zip.meta b/Assets/Plugins/iOS/liblzma.a.fastest-smallest.zip.meta
new file mode 100644
index 0000000..ff60bf2
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a.fastest-smallest.zip.meta
@@ -0,0 +1,6 @@
+fileFormatVersion: 2
+guid: a09a492a241113640a4f6d92fcbf3b06
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/liblzma.a.fastest.zip b/Assets/Plugins/iOS/liblzma.a.fastest.zip
new file mode 100644
index 0000000..eb1e749
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a.fastest.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/liblzma.a.fastest.zip.meta b/Assets/Plugins/iOS/liblzma.a.fastest.zip.meta
new file mode 100644
index 0000000..57d0c50
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a.fastest.zip.meta
@@ -0,0 +1,6 @@
+fileFormatVersion: 2
+guid: 01faae07d6f95d542b54575ee72e8251
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/liblzma.a.meta b/Assets/Plugins/iOS/liblzma.a.meta
new file mode 100644
index 0000000..1668536
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.a.meta
@@ -0,0 +1,21 @@
+fileFormatVersion: 2
+guid: 105d4f0d61dadd545bcaa1893acff966
+PluginImporter:
+ serializedVersion: 1
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ platformData:
+ Any:
+ enabled: 0
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ iOS:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/liblzma.smallest.zip b/Assets/Plugins/iOS/liblzma.smallest.zip
new file mode 100644
index 0000000..ed6d331
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.smallest.zip
Binary files differ
diff --git a/Assets/Plugins/iOS/liblzma.smallest.zip.meta b/Assets/Plugins/iOS/liblzma.smallest.zip.meta
new file mode 100644
index 0000000..30ed596
--- /dev/null
+++ b/Assets/Plugins/iOS/liblzma.smallest.zip.meta
@@ -0,0 +1,6 @@
+fileFormatVersion: 2
+guid: c4bfcb521dd223a4f9f982364b11aa9a
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/liblzma.bundle.meta b/Assets/Plugins/liblzma.bundle.meta
new file mode 100644
index 0000000..68196e6
--- /dev/null
+++ b/Assets/Plugins/liblzma.bundle.meta
@@ -0,0 +1,105 @@
+fileFormatVersion: 2
+guid: 63d5675a14cb23e49912d4f187b616e8
+folderAsset: yes
+PluginImporter:
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ data:
+ first:
+ Android: Android
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ data:
+ first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ data:
+ first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: OSX
+ data:
+ first:
+ Facebook: Win
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ data:
+ first:
+ Facebook: Win64
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ data:
+ first:
+ Standalone: Linux
+ second:
+ enabled: 1
+ settings:
+ CPU: x86
+ data:
+ first:
+ Standalone: Linux64
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ data:
+ first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ data:
+ first:
+ Standalone: OSXIntel
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ data:
+ first:
+ Standalone: OSXIntel64
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ data:
+ first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ data:
+ first:
+ Standalone: Win
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ data:
+ first:
+ Standalone: Win64
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/liblzma.bundle/Contents.meta b/Assets/Plugins/liblzma.bundle/Contents.meta
new file mode 100644
index 0000000..dcc6167
--- /dev/null
+++ b/Assets/Plugins/liblzma.bundle/Contents.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: dc97a21f359ee4227b7f5c87717fb807
+folderAsset: yes
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/liblzma.bundle/Contents/Info.plist b/Assets/Plugins/liblzma.bundle/Contents/Info.plist
new file mode 100644
index 0000000..076f901
--- /dev/null
+++ b/Assets/Plugins/liblzma.bundle/Contents/Info.plist
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>BuildMachineOSBuild</key>
+ <string>15E65</string>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>liblzma</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.lzma.liblzma</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>liblzma</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleSupportedPlatforms</key>
+ <array>
+ <string>MacOSX</string>
+ </array>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>DTCompiler</key>
+ <string>com.apple.compilers.llvm.clang.1_0</string>
+ <key>DTPlatformBuild</key>
+ <string>7D175</string>
+ <key>DTPlatformVersion</key>
+ <string>GM</string>
+ <key>DTSDKBuild</key>
+ <string>15E60</string>
+ <key>DTSDKName</key>
+ <string>macosx10.11</string>
+ <key>DTXcode</key>
+ <string>0730</string>
+ <key>DTXcodeBuild</key>
+ <string>7D175</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright 漏 2015 liblzma. All rights reserved.</string>
+</dict>
+</plist>
diff --git a/Assets/Plugins/liblzma.bundle/Contents/Info.plist.meta b/Assets/Plugins/liblzma.bundle/Contents/Info.plist.meta
new file mode 100644
index 0000000..c59d0de
--- /dev/null
+++ b/Assets/Plugins/liblzma.bundle/Contents/Info.plist.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8dfb9d1243974425dbfb586b931e8fcf
+timeCreated: 1461938405
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/liblzma.bundle/Contents/MacOS.meta b/Assets/Plugins/liblzma.bundle/Contents/MacOS.meta
new file mode 100644
index 0000000..d9a6b18
--- /dev/null
+++ b/Assets/Plugins/liblzma.bundle/Contents/MacOS.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: fcdc6e0bbfd78425f96d7e8a1196b892
+folderAsset: yes
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/liblzma.bundle/Contents/MacOS/liblzma b/Assets/Plugins/liblzma.bundle/Contents/MacOS/liblzma
new file mode 100644
index 0000000..048ce47
--- /dev/null
+++ b/Assets/Plugins/liblzma.bundle/Contents/MacOS/liblzma
Binary files differ
diff --git a/Assets/Plugins/liblzma.bundle/Contents/MacOS/liblzma.meta b/Assets/Plugins/liblzma.bundle/Contents/MacOS/liblzma.meta
new file mode 100644
index 0000000..44663b7
--- /dev/null
+++ b/Assets/Plugins/liblzma.bundle/Contents/MacOS/liblzma.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ce457a7d0ad044b069c5f1e12c271693
+timeCreated: 1461938405
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/x86.meta b/Assets/Plugins/x86.meta
new file mode 100644
index 0000000..cbb2f23
--- /dev/null
+++ b/Assets/Plugins/x86.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 4d91deb074c81564388a0deffdb37efe
+folderAsset: yes
+timeCreated: 1541063936
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/x86/liblzma.dll b/Assets/Plugins/x86/liblzma.dll
new file mode 100644
index 0000000..8f3c7d9
--- /dev/null
+++ b/Assets/Plugins/x86/liblzma.dll
Binary files differ
diff --git a/Assets/Plugins/x86/liblzma.dll.meta b/Assets/Plugins/x86/liblzma.dll.meta
new file mode 100644
index 0000000..eb28c20
--- /dev/null
+++ b/Assets/Plugins/x86/liblzma.dll.meta
@@ -0,0 +1,78 @@
+fileFormatVersion: 2
+guid: d994befc74ab2d14eaac2bb81af65a34
+PluginImporter:
+ serializedVersion: 1
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ platformData:
+ Android:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ Any:
+ enabled: 0
+ settings: {}
+ Editor:
+ enabled: 1
+ settings:
+ CPU: x86
+ DefaultValueInitialized: true
+ OS: AnyOS
+ Linux:
+ enabled: 1
+ settings:
+ CPU: x86
+ Linux64:
+ enabled: 1
+ settings:
+ CPU: None
+ LinuxUniversal:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ OSXIntel:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ OSXIntel64:
+ enabled: 1
+ settings:
+ CPU: None
+ OSXUniversal:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ SamsungTV:
+ enabled: 0
+ settings:
+ STV_MODEL: STANDARD_13
+ WP8:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DontProcess: False
+ PlaceholderPath:
+ Win:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ Win64:
+ enabled: 0
+ settings:
+ CPU: None
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DontProcess: False
+ PlaceholderPath:
+ SDK: AnySDK
+ iOS:
+ enabled: 0
+ settings:
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/x86/liblzma.so b/Assets/Plugins/x86/liblzma.so
new file mode 100644
index 0000000..be2bb17
--- /dev/null
+++ b/Assets/Plugins/x86/liblzma.so
Binary files differ
diff --git a/Assets/Plugins/x86/liblzma.so.meta b/Assets/Plugins/x86/liblzma.so.meta
new file mode 100644
index 0000000..bd27224
--- /dev/null
+++ b/Assets/Plugins/x86/liblzma.so.meta
@@ -0,0 +1,78 @@
+fileFormatVersion: 2
+guid: ff306ab5a1e61dd43949f88c2ed78bf1
+PluginImporter:
+ serializedVersion: 1
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ platformData:
+ Android:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ Any:
+ enabled: 0
+ settings: {}
+ Editor:
+ enabled: 1
+ settings:
+ CPU: x86
+ DefaultValueInitialized: true
+ OS: AnyOS
+ Linux:
+ enabled: 1
+ settings:
+ CPU: x86
+ Linux64:
+ enabled: 0
+ settings:
+ CPU: None
+ LinuxUniversal:
+ enabled: 1
+ settings:
+ CPU: x86
+ OSXIntel:
+ enabled: 0
+ settings:
+ CPU: None
+ OSXIntel64:
+ enabled: 0
+ settings:
+ CPU: None
+ OSXUniversal:
+ enabled: 0
+ settings:
+ CPU: None
+ SamsungTV:
+ enabled: 0
+ settings:
+ STV_MODEL: STANDARD_13
+ WP8:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DontProcess: False
+ PlaceholderPath:
+ Win:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ Win64:
+ enabled: 1
+ settings:
+ CPU: None
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DontProcess: False
+ PlaceholderPath:
+ SDK: AnySDK
+ iOS:
+ enabled: 0
+ settings:
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/x86_64.meta b/Assets/Plugins/x86_64.meta
new file mode 100644
index 0000000..f0675b9
--- /dev/null
+++ b/Assets/Plugins/x86_64.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: af7a02cd8159b3f43a03b1eb98f5e4f7
+folderAsset: yes
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/x86_64/liblzma.dll b/Assets/Plugins/x86_64/liblzma.dll
new file mode 100644
index 0000000..b8283bc
--- /dev/null
+++ b/Assets/Plugins/x86_64/liblzma.dll
Binary files differ
diff --git a/Assets/Plugins/x86_64/liblzma.dll.meta b/Assets/Plugins/x86_64/liblzma.dll.meta
new file mode 100644
index 0000000..43c9131
--- /dev/null
+++ b/Assets/Plugins/x86_64/liblzma.dll.meta
@@ -0,0 +1,78 @@
+fileFormatVersion: 2
+guid: f2d2b6279f15d5742abe1a18469e956e
+PluginImporter:
+ serializedVersion: 1
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ platformData:
+ Android:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ Any:
+ enabled: 0
+ settings: {}
+ Editor:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ DefaultValueInitialized: true
+ OS: AnyOS
+ Linux:
+ enabled: 1
+ settings:
+ CPU: None
+ Linux64:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ LinuxUniversal:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ OSXIntel:
+ enabled: 1
+ settings:
+ CPU: None
+ OSXIntel64:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ OSXUniversal:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ SamsungTV:
+ enabled: 0
+ settings:
+ STV_MODEL: STANDARD_13
+ WP8:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DontProcess: False
+ PlaceholderPath:
+ Win:
+ enabled: 0
+ settings:
+ CPU: None
+ Win64:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DontProcess: False
+ PlaceholderPath:
+ SDK: AnySDK
+ iOS:
+ enabled: 0
+ settings:
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/x86_64/liblzma.so b/Assets/Plugins/x86_64/liblzma.so
new file mode 100644
index 0000000..8c81312
--- /dev/null
+++ b/Assets/Plugins/x86_64/liblzma.so
Binary files differ
diff --git a/Assets/Plugins/x86_64/liblzma.so.meta b/Assets/Plugins/x86_64/liblzma.so.meta
new file mode 100644
index 0000000..060662f
--- /dev/null
+++ b/Assets/Plugins/x86_64/liblzma.so.meta
@@ -0,0 +1,78 @@
+fileFormatVersion: 2
+guid: 7778049c517fa6a42a4c1c97c462fb57
+PluginImporter:
+ serializedVersion: 1
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ platformData:
+ Android:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ Any:
+ enabled: 0
+ settings: {}
+ Editor:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ DefaultValueInitialized: true
+ OS: AnyOS
+ Linux:
+ enabled: 0
+ settings:
+ CPU: None
+ Linux64:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ LinuxUniversal:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ OSXIntel:
+ enabled: 0
+ settings:
+ CPU: None
+ OSXIntel64:
+ enabled: 0
+ settings:
+ CPU: None
+ OSXUniversal:
+ enabled: 0
+ settings:
+ CPU: None
+ SamsungTV:
+ enabled: 0
+ settings:
+ STV_MODEL: STANDARD_13
+ WP8:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DontProcess: False
+ PlaceholderPath:
+ Win:
+ enabled: 1
+ settings:
+ CPU: None
+ Win64:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DontProcess: False
+ PlaceholderPath:
+ SDK: AnySDK
+ iOS:
+ enabled: 0
+ settings:
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/test7zip.cs b/Assets/test7zip.cs
new file mode 100644
index 0000000..bc2814f
--- /dev/null
+++ b/Assets/test7zip.cs
@@ -0,0 +1,33 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.IO;
+
+public class test7zip : MonoBehaviour
+{
+
+ // Use this for initialization
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ if (Input.GetKeyDown(KeyCode.F))
+ {
+ var files = new List<FileInfo>();
+ FileExtersion.GetAllDirectoryFileInfos(Application.streamingAssetsPath, files);
+ foreach (var item in files)
+ {
+ var fullName = item.FullName;
+ if (fullName.EndsWith(".7z"))
+ {
+ SevenZipUtility.DeCompress(fullName, Path.GetDirectoryName(fullName));
+ }
+ }
+
+ }
+ }
+}
diff --git a/Assets/Editor/Tool/SevenZipUtility.cs.meta b/Assets/test7zip.cs.meta
similarity index 75%
rename from Assets/Editor/Tool/SevenZipUtility.cs.meta
rename to Assets/test7zip.cs.meta
index b33edf8..37349b7 100644
--- a/Assets/Editor/Tool/SevenZipUtility.cs.meta
+++ b/Assets/test7zip.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
-guid: f144847788b6f254083b077d968bc6f4
-timeCreated: 1541055675
+guid: 7a1b12e7a570a4345879992fcd78e239
+timeCreated: 1541066123
licenseType: Pro
MonoImporter:
serializedVersion: 2
--
Gitblit v1.8.0