From 75c46bc9744809382b5ffe757e7ffadcb9b6ac10 Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Fri, 18 Nov 2022 20:25:22 +0100 Subject: [PATCH 01/11] wip --- .github/workflows/package.yml | 29 +++++++++++++++++++ scripts/ci/activate-license.sh | 6 ++++ scripts/export-unity-package.py | 49 +++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 scripts/ci/activate-license.sh create mode 100644 scripts/export-unity-package.py diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 39228dd..00becc4 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -42,3 +42,32 @@ jobs: with: name: "ubuntu-16.04" path: build/libFreeImage.so + package-unity-2021-3: + runs-on: ubuntu-latest + container: + image: unityci/editor:ubuntu-2021.3.9f1-base-1.0.1 + steps: + - uses: actions/checkout@v1 + with: + submodules: true + - uses: actions/download-artifact@master + with: + name: arm64-v8a + path: binaries/arm64-v8a + - uses: actions/download-artifact@master + with: + name: armeabi-v7a + path: binaries/armeabi-v7a + - name: Package + run: | + chmod a+x scripts/ci/activate-license.sh + ./scripts/ci/activate-license.sh + echo "Packaging..." + python scripts/export-unity-package.py /opt/unity/Editor/Unity -nodisplay + shell: bash + env: + UNITY_LICENSE: ${{ secrets.UNITY_LICENSE_BASE64 }} + - uses: actions/upload-artifact@v3 + with: + name: UnityAsyncTextureImport-Unity-2021.unitypackage + path: UnityAsyncTextureImport.unitypackage diff --git a/scripts/ci/activate-license.sh b/scripts/ci/activate-license.sh new file mode 100644 index 0000000..24e1de4 --- /dev/null +++ b/scripts/ci/activate-license.sh @@ -0,0 +1,6 @@ +apt install coreutils +echo "$UNITY_LICENSE" | base64 -d > unity_license.ulf +ls +ls /opt/unity/Editor/ +echo "Activating unity license..." +/opt/unity/Editor/Unity -batchmode -nographics -quit -manualLicenseFile unity_license.ulf || true diff --git a/scripts/export-unity-package.py b/scripts/export-unity-package.py new file mode 100644 index 0000000..76a8ff6 --- /dev/null +++ b/scripts/export-unity-package.py @@ -0,0 +1,49 @@ +import os, shutil, errno, sys + +def copy_filedir(src, dst): + try: + shutil.copytree(src, dst) + except OSError as exc: # python >2.5 + if exc.errno in (errno.ENOTDIR, errno.EINVAL): + shutil.copy(src, dst) + else: raise + +if len(sys.argv) > 1: + unity_path = str(sys.argv[1]) +else: + print("ERROR: You need to pass the path to Unity editor executable.") + return + +nodisplay = "-nodisplay" in sys.argv +package_name = 'UnityAsyncTextureImport.unitypackage' +plugin_folder_name = 'UnityAsyncTextureImport' +unity_project_dir = 'unity-async-texture-import' + +export_project_path = "tmp-package-export" + +if os.path.exists(export_project_path): + shutil.rmtree(export_project_path) +os.mkdir(export_project_path) + +assets = ["Assets", "ACKNOWLEDGEMENTS.txt", "ACKNOWLEDGEMENTS.txt", "LICENSE", "README.md", "FreeImage-license-GPLv3"] + +for asset in assets: + src_asset = os.path.join(unity_project_dir, asset) + dest_asset = os.path.join(export_project_path, "Assets", plugin_folder_name, asset) + copy_filedir(src_asset, dest_asset) + +# Copy binaries +freeImage_bin_dir = os.path.join(export_project_path, "Assets", plugin_folder_name, "Assets", "Plugins", "FreeImage") +copy_filedir(os.path.join("binaries", "arm64-v8a", "libFreeImage.so)", os.path.join(freeImage_bin_dir, "Android", "arm64-v8a", "libFreeImage.so")) +copy_filedir(os.path.join("binaries", "armeabi-v7a", "libFreeImage.so)", os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a", "libFreeImage.so")) + +command_string = "\"{unity_path}\" -projectPath {project_path} -exportPackage Assets {package_name} -batchmode -nographics -silent-crashes -quit".format(unity_path=unity_path, project_path=export_project_path, package_name=package_name) +# Run through cvfb if no display available (building in container, etc.). +if nodisplay: + command_string = "xvfb-run --auto-servernum --server-args=\'-screen 0 640x480x24\' " + command_string +print(command_string) +os.system(command_string) + +shutil.copy(os.path.join(export_project_path, package_name), package_name) + +shutil.rmtree(export_project_path) From 73bd232b122162e17b4fbcfe9fdc98a532545bad Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Fri, 18 Nov 2022 20:30:36 +0100 Subject: [PATCH 02/11] fix --- .github/workflows/package.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 00becc4..380a35f 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -43,6 +43,7 @@ jobs: name: "ubuntu-16.04" path: build/libFreeImage.so package-unity-2021-3: + needs: build-freeimage-android runs-on: ubuntu-latest container: image: unityci/editor:ubuntu-2021.3.9f1-base-1.0.1 From 334c06799cb27ba3e7f46a5cf7613ec0146ee413 Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Fri, 18 Nov 2022 21:02:11 +0100 Subject: [PATCH 03/11] Package --- scripts/export-unity-package.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/export-unity-package.py b/scripts/export-unity-package.py index 76a8ff6..8575658 100644 --- a/scripts/export-unity-package.py +++ b/scripts/export-unity-package.py @@ -12,12 +12,12 @@ def copy_filedir(src, dst): unity_path = str(sys.argv[1]) else: print("ERROR: You need to pass the path to Unity editor executable.") - return + exit() nodisplay = "-nodisplay" in sys.argv package_name = 'UnityAsyncTextureImport.unitypackage' plugin_folder_name = 'UnityAsyncTextureImport' -unity_project_dir = 'unity-async-texture-import' +unity_project_dir = 'unity-async-textureimport' export_project_path = "tmp-package-export" @@ -34,8 +34,11 @@ def copy_filedir(src, dst): # Copy binaries freeImage_bin_dir = os.path.join(export_project_path, "Assets", plugin_folder_name, "Assets", "Plugins", "FreeImage") -copy_filedir(os.path.join("binaries", "arm64-v8a", "libFreeImage.so)", os.path.join(freeImage_bin_dir, "Android", "arm64-v8a", "libFreeImage.so")) -copy_filedir(os.path.join("binaries", "armeabi-v7a", "libFreeImage.so)", os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a", "libFreeImage.so")) +os.mkdir(os.path.join(freeImage_bin_dir, "Android")) +os.mkdir(os.path.join(freeImage_bin_dir, "Android", "arm64-v8a")) +copy_filedir(os.path.join("binaries", "arm64-v8a", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Android", "arm64-v8a", "libFreeImage.so")) +os.mkdir(os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a")) +copy_filedir(os.path.join("binaries", "armeabi-v7a", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a", "libFreeImage.so")) command_string = "\"{unity_path}\" -projectPath {project_path} -exportPackage Assets {package_name} -batchmode -nographics -silent-crashes -quit".format(unity_path=unity_path, project_path=export_project_path, package_name=package_name) # Run through cvfb if no display available (building in container, etc.). From 1a349f65b3efa7a7939b1d337cdc163fc17dfb7c Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Thu, 24 Nov 2022 22:06:52 +0100 Subject: [PATCH 04/11] Update package.yml --- .github/workflows/package.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 380a35f..427eb86 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -59,6 +59,10 @@ jobs: with: name: armeabi-v7a path: binaries/armeabi-v7a + - uses: actions/download-artifact@master + with: + name: ubuntu-16.04 + path: binaries/linux - name: Package run: | chmod a+x scripts/ci/activate-license.sh From 596ebd0222dd3791965f006c79ed43689412725a Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Thu, 24 Nov 2022 22:07:50 +0100 Subject: [PATCH 05/11] Update export-unity-package.py --- scripts/export-unity-package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/export-unity-package.py b/scripts/export-unity-package.py index 8575658..0a2909c 100644 --- a/scripts/export-unity-package.py +++ b/scripts/export-unity-package.py @@ -39,6 +39,8 @@ def copy_filedir(src, dst): copy_filedir(os.path.join("binaries", "arm64-v8a", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Android", "arm64-v8a", "libFreeImage.so")) os.mkdir(os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a")) copy_filedir(os.path.join("binaries", "armeabi-v7a", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a", "libFreeImage.so")) +os.mkdir(os.path.join(freeImage_bin_dir, "Linux")) +copy_filedir(os.path.join("binaries", "Linux", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Linux", "libFreeImage.so")) command_string = "\"{unity_path}\" -projectPath {project_path} -exportPackage Assets {package_name} -batchmode -nographics -silent-crashes -quit".format(unity_path=unity_path, project_path=export_project_path, package_name=package_name) # Run through cvfb if no display available (building in container, etc.). From 1fee73ac1930ac702ec4d1bf65485ac922b55934 Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Thu, 24 Nov 2022 22:27:47 +0100 Subject: [PATCH 06/11] Linux binaries --- scripts/export-unity-package.py | 8 ++++++-- unity-async-textureimport | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/export-unity-package.py b/scripts/export-unity-package.py index 0a2909c..08de012 100644 --- a/scripts/export-unity-package.py +++ b/scripts/export-unity-package.py @@ -39,8 +39,12 @@ def copy_filedir(src, dst): copy_filedir(os.path.join("binaries", "arm64-v8a", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Android", "arm64-v8a", "libFreeImage.so")) os.mkdir(os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a")) copy_filedir(os.path.join("binaries", "armeabi-v7a", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a", "libFreeImage.so")) -os.mkdir(os.path.join(freeImage_bin_dir, "Linux")) -copy_filedir(os.path.join("binaries", "Linux", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Linux", "libFreeImage.so")) +#os.mkdir(os.path.join(freeImage_bin_dir, "Linux")) +copy_filedir(os.path.join("binaries", "linux", "libFreeImage.so"), os.path.join(freeImage_bin_dir, "Linux", "libFreeImage.so")) +# Copy meta files +shutil.copy(os.path.join("bin-meta", "arm64-v8a.meta"), os.path.join(freeImage_bin_dir, "Android", "arm64-v8a", "libFreeImage.so.meta")) +shutil.copy(os.path.join("bin-meta", "armeabi-v7a.meta"), os.path.join(freeImage_bin_dir, "Android", "armeabi-v7a", "libFreeImage.so.meta")) +shutil.copy(os.path.join("bin-meta", "linux.meta"), os.path.join(freeImage_bin_dir, "Linux", "libFreeImage.so.meta")) command_string = "\"{unity_path}\" -projectPath {project_path} -exportPackage Assets {package_name} -batchmode -nographics -silent-crashes -quit".format(unity_path=unity_path, project_path=export_project_path, package_name=package_name) # Run through cvfb if no display available (building in container, etc.). diff --git a/unity-async-textureimport b/unity-async-textureimport index 183dc52..6abe120 160000 --- a/unity-async-textureimport +++ b/unity-async-textureimport @@ -1 +1 @@ -Subproject commit 183dc52a7b3d048637094426f3ac46c25179d25a +Subproject commit 6abe1205e08f71ec5b1cef2801a9b5e97e1e5f03 From c64774f79b17a54a404ca4e9f6450248f3be3738 Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Thu, 24 Nov 2022 22:39:07 +0100 Subject: [PATCH 07/11] added meta files for binaries --- bin-meta/arm64-v8a.meta | 70 +++++++++++++++++++++++++++++++++++++++ bin-meta/armeabi-v7a.meta | 70 +++++++++++++++++++++++++++++++++++++++ bin-meta/linux.meta | 70 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 210 insertions(+) create mode 100644 bin-meta/arm64-v8a.meta create mode 100644 bin-meta/armeabi-v7a.meta create mode 100644 bin-meta/linux.meta diff --git a/bin-meta/arm64-v8a.meta b/bin-meta/arm64-v8a.meta new file mode 100644 index 0000000..4814473 --- /dev/null +++ b/bin-meta/arm64-v8a.meta @@ -0,0 +1,70 @@ +fileFormatVersion: 2 +guid: 836091bca52a63137ab87ad521299447 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARM64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/bin-meta/armeabi-v7a.meta b/bin-meta/armeabi-v7a.meta new file mode 100644 index 0000000..2c7b56f --- /dev/null +++ b/bin-meta/armeabi-v7a.meta @@ -0,0 +1,70 @@ +fileFormatVersion: 2 +guid: e7e092ec832ac5c2fa122b55f4711ca1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/bin-meta/linux.meta b/bin-meta/linux.meta new file mode 100644 index 0000000..4fdc438 --- /dev/null +++ b/bin-meta/linux.meta @@ -0,0 +1,70 @@ +fileFormatVersion: 2 +guid: 50b327450dc276c1bb88b6bb553c63e1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Linux + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: From 5a27d76313dbdbc98503a8ede446495e1daf81e4 Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Tue, 13 Dec 2022 12:25:54 +0100 Subject: [PATCH 08/11] Unity 2022.0 --- .github/workflows/package.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 427eb86..f6147b6 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -76,3 +76,37 @@ jobs: with: name: UnityAsyncTextureImport-Unity-2021.unitypackage path: UnityAsyncTextureImport.unitypackage + package-unity-2022-3: + needs: build-freeimage-android + runs-on: ubuntu-latest + container: + image: unityci/editor:ubuntu-2022.2.0f1-base-1.0.1 + steps: + - uses: actions/checkout@v1 + with: + submodules: true + - uses: actions/download-artifact@master + with: + name: arm64-v8a + path: binaries/arm64-v8a + - uses: actions/download-artifact@master + with: + name: armeabi-v7a + path: binaries/armeabi-v7a + - uses: actions/download-artifact@master + with: + name: ubuntu-16.04 + path: binaries/linux + - name: Package + run: | + chmod a+x scripts/ci/activate-license.sh + ./scripts/ci/activate-license.sh + echo "Packaging..." + python scripts/export-unity-package.py /opt/unity/Editor/Unity -nodisplay + shell: bash + env: + UNITY_LICENSE: ${{ secrets.UNITY_LICENSE_BASE64 }} + - uses: actions/upload-artifact@v3 + with: + name: UnityAsyncTextureImport-Unity-2022.unitypackage + path: UnityAsyncTextureImport.unitypackage From e560312a5762202a20b9b4b52376b81cbee16a3e Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Tue, 13 Dec 2022 12:54:59 +0100 Subject: [PATCH 09/11] Update package.yml --- .github/workflows/package.yml | 42 +++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index f6147b6..f86480b 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -3,7 +3,7 @@ name: Package on: [push, pull_request] jobs: - build-freeimage-android: + build-freeimage-android-unity-2021: runs-on: ubuntu-latest container: image: unityci/editor:ubuntu-2021.3.14f1-android-1.0.1 @@ -21,11 +21,35 @@ jobs: shell: bash - uses: actions/upload-artifact@v3 with: - name: "arm64-v8a" + name: "arm64-v8a-unity-2021" path: build-arm64-v8a/libFreeImage.so - uses: actions/upload-artifact@v3 with: - name: "armeabi-v7a" + name: "armeabi-v7a-unity-2021" + path: build-armeabi-v7a/libFreeImage.so + build-freeimage-android-unity-2022: + runs-on: ubuntu-latest + container: + image: unityci/editor:ubuntu-2022.2.0f1-base-1.0.1 + steps: + - uses: actions/checkout@v1 + with: + submodules: true + - name: Build FreeImage + run: | + apt update -y + apt install cmake -y + apt install build-essential -y + chmod a+x scripts/build-android.py + python scripts/build-android.py /opt/unity/Editor + shell: bash + - uses: actions/upload-artifact@v3 + with: + name: "arm64-v8a-unity-2022" + path: build-arm64-v8a/libFreeImage.so + - uses: actions/upload-artifact@v3 + with: + name: "armeabi-v7a-unity-2022" path: build-armeabi-v7a/libFreeImage.so build-freeimage-ubuntu: runs-on: ubuntu-18.04 @@ -43,7 +67,7 @@ jobs: name: "ubuntu-16.04" path: build/libFreeImage.so package-unity-2021-3: - needs: build-freeimage-android + needs: build-freeimage-android-unity-2021 runs-on: ubuntu-latest container: image: unityci/editor:ubuntu-2021.3.9f1-base-1.0.1 @@ -53,11 +77,11 @@ jobs: submodules: true - uses: actions/download-artifact@master with: - name: arm64-v8a + name: arm64-v8a-unity-2021 path: binaries/arm64-v8a - uses: actions/download-artifact@master with: - name: armeabi-v7a + name: armeabi-v7a-unity-2021 path: binaries/armeabi-v7a - uses: actions/download-artifact@master with: @@ -77,7 +101,7 @@ jobs: name: UnityAsyncTextureImport-Unity-2021.unitypackage path: UnityAsyncTextureImport.unitypackage package-unity-2022-3: - needs: build-freeimage-android + needs: build-freeimage-android-unity-2022 runs-on: ubuntu-latest container: image: unityci/editor:ubuntu-2022.2.0f1-base-1.0.1 @@ -87,11 +111,11 @@ jobs: submodules: true - uses: actions/download-artifact@master with: - name: arm64-v8a + name: arm64-v8a-unity-2022 path: binaries/arm64-v8a - uses: actions/download-artifact@master with: - name: armeabi-v7a + name: armeabi-v7a-unity-2022 path: binaries/armeabi-v7a - uses: actions/download-artifact@master with: From 1519192d2a0af294e80efbddd46626891d25385d Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Tue, 13 Dec 2022 13:02:31 +0100 Subject: [PATCH 10/11] Update package.yml --- .github/workflows/package.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index f86480b..64e840a 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -30,7 +30,7 @@ jobs: build-freeimage-android-unity-2022: runs-on: ubuntu-latest container: - image: unityci/editor:ubuntu-2022.2.0f1-base-1.0.1 + image: unityci/editor:ubuntu-2022.2.0f1-android-1.0.1 steps: - uses: actions/checkout@v1 with: @@ -98,9 +98,9 @@ jobs: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE_BASE64 }} - uses: actions/upload-artifact@v3 with: - name: UnityAsyncTextureImport-Unity-2021.unitypackage + name: UnityAsyncTextureImport-Unity-2021.3.unitypackage path: UnityAsyncTextureImport.unitypackage - package-unity-2022-3: + package-unity-2022-2: needs: build-freeimage-android-unity-2022 runs-on: ubuntu-latest container: @@ -132,5 +132,5 @@ jobs: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE_BASE64 }} - uses: actions/upload-artifact@v3 with: - name: UnityAsyncTextureImport-Unity-2022.unitypackage + name: UnityAsyncTextureImport-Unity-2022.2.unitypackage path: UnityAsyncTextureImport.unitypackage From 062d56e4fd07f17eee3658996a369a518307efac Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Wed, 14 Dec 2022 23:39:36 +0100 Subject: [PATCH 11/11] Create README.md --- README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..7efdfe1 --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# Unity Async Texture Importer (automatic builds) + +This repository is simply a set of build scripts and actions for building and packaging unity-async-textureimport for Unity. +See main repo here: https://codeberg.org/matiaslavik/unity-async-textureimport + +This is a faster alternative to [Texture2D.LoadImage](https://docs.unity3d.com/530/Documentation/ScriptReference/Texture2D.LoadImage.html) and , which can only be used on the main thread - and which will block the thread until it's done. + +# How to use +Create a [coroutine](https://docs.unity3d.com/Manual/Coroutines.html), and from there do this: +```csharp +TextureImporter importer = new TextureImporter(); +yield return importer.ImportTexture(texPath, FREE_IMAGE_FORMAT.FIF_JPEG); +Texture2D tex = importer.texture; +``` +See the sample scene for an example. + +# What it does +The TextureImporter class has a public IEnumerator ("ImportTexture") that you can call/yield from a coroutine. It runs a task in a separate thread that loads the texture file, converts it to raw data and generates mipmaps. When the task is done, the IEnumerator will finally upload the raw data by calling [Texture2D.LoadRawTextureData](https://docs.unity3d.com/ScriptReference/Texture2D.LoadRawTextureData.html). +Since the file reading, decompressing and mipmap generation is done in a separate thread, you will be able to load large textures without causing FPS lags/hiccups. +I used [FreeImage](https://freeimage.sourceforge.io/) for the texture loading/conversion. + +# License + MIT License + (See the "LICENSE" file) + + Note: This project uses the FreeImage library. To use this project, you should include a copy of the FreeImage license (GPL or FIPL). See more info here: https://freeimage.sourceforge.io/license.html