From 75a1003b8c61ae369859d625b7c91b93afc8a59d Mon Sep 17 00:00:00 2001 From: Marllon Vilano Date: Mon, 19 Feb 2024 13:34:59 -0300 Subject: [PATCH 1/8] Fix for IndexOutOfRangeException: Index was outside the bounds of the array --- .../Runtime/GenericOnDemandTextureLoader.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs index 95e33ce19..1f9207fe0 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs @@ -264,6 +264,10 @@ namespace Spine.Unity { System.Action onTextureLoaded) { PlaceholderTextureMapping[] placeholderTextures = placeholderMap[materialIndex].textures; + if (placeholderTextures == null || textureIndex >= placeholderTextures.Length) { + return null; + } + TargetReference targetReference = placeholderTextures[textureIndex].targetTextureReference; loadedDataAtMaterial[materialIndex].lastFrameRequested = Time.frameCount; From 41e493b7c3986fc736574c227666c67ff9e5be82 Mon Sep 17 00:00:00 2001 From: Marllon Vilano Date: Mon, 19 Feb 2024 13:39:04 -0300 Subject: [PATCH 2/8] Fix for NullReferenceException: Object reference not set to an instance of an object --- .../Runtime/GenericOnDemandTextureLoader.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs index 1f9207fe0..17913689f 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs @@ -194,7 +194,13 @@ namespace Spine.Unity { loadedDataAtMaterial = new MaterialOnDemandData[placeholderMap.Length]; for (int i = 0, count = loadedDataAtMaterial.Length; i < count; ++i) { loadedDataAtMaterial[i].lastFrameRequested = -1; - int texturesAtMaterial = placeholderMap[i].textures.Length; + + var textures = placeholderMap[i].textures; + if (textures == null) { + continue; + } + + int texturesAtMaterial = textures.Length; loadedDataAtMaterial[i].textureRequests = new TextureRequest[texturesAtMaterial]; } } From 0a3b5dbb31e7792f9fd3f106534d968712645323 Mon Sep 17 00:00:00 2001 From: Marllon Vilano Date: Mon, 19 Feb 2024 13:42:33 -0300 Subject: [PATCH 3/8] Fix for IndexOutOfRangeException: Index was outside the bounds of the array --- .../Editor/GenericOnDemandTextureLoaderInspector.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs index 50ce4aceb..f9168ce72 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs @@ -374,7 +374,12 @@ namespace Spine.Unity.Editor { public void DeletePlaceholderTextures (GenericOnDemandTextureLoader loader) { foreach (var materialMap in loader.placeholderMap) { - Texture texture = materialMap.textures[0].placeholderTexture; + var textures = materialMap.textures; + if (textures == null || textures.Length == 0) { + continue; + } + + Texture texture = textures[0].placeholderTexture; if (texture) AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(texture)); } From 12e424bee102d202d3dfc1aecfaadc3bfacb6a55 Mon Sep 17 00:00:00 2001 From: Marllon Vilano Date: Mon, 19 Feb 2024 21:06:16 -0300 Subject: [PATCH 4/8] Fix for ArgumentException: Texture2D.SetPixels: texture uses an unsupported format --- .../GenericOnDemandTextureLoaderInspector.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs index f9168ce72..c5845ba72 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs @@ -206,13 +206,21 @@ namespace Spine.Unity.Editor { Texture2D texture2D = AssetDatabase.LoadAssetAtPath(texturePath); if (texture2D) { Color[] maxTextureSizePixels = texture2D.GetPixels(); - texture2D.SetPixels(maxTextureSizePixels); - var bytes = texture2D.EncodeToPNG(); + // SetPixels works only for non-compressed textures using certain formats. + var nonCompressedTexture = + new Texture2D(texture2D.width, texture2D.height, TextureFormat.RGBA32, false); + + nonCompressedTexture.SetPixels(maxTextureSizePixels); + + var bytes = nonCompressedTexture.EncodeToPNG(); string targetPath = Application.dataPath + "/../" + texturePath; System.IO.File.WriteAllBytes(targetPath, bytes); - texture2D.Apply(updateMipmaps: true, makeNoLongerReadable: true); - EditorUtility.SetDirty(texture2D); + + importer.isReadable = false; + importer.SaveAndReimport(); + + EditorUtility.SetDirty(nonCompressedTexture); AssetDatabase.SaveAssets(); } } From acd994d00a79c98087ef932923280947fb4559a6 Mon Sep 17 00:00:00 2001 From: Marllon Vilano Date: Mon, 19 Feb 2024 21:13:28 -0300 Subject: [PATCH 5/8] Add logic to disable TextureImporter overrides for every platform and enable them again after persisting the new texture size --- .../GenericOnDemandTextureLoaderInspector.cs | 7 +++ .../Editor/TextureImporterUtils.cs | 61 +++++++++++++++++++ .../Editor/TextureImporterUtils.cs.meta | 3 + 3 files changed, 71 insertions(+) create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs.meta diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs index c5845ba72..6c135c349 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs @@ -203,6 +203,9 @@ namespace Spine.Unity.Editor { importer.SaveAndReimport(); if (resizePhysically) { + bool hasOverridesToEnable = + TextureImporterUtils.TryDisableOverrides(importer, out List disabledPlatforms); + Texture2D texture2D = AssetDatabase.LoadAssetAtPath(texturePath); if (texture2D) { Color[] maxTextureSizePixels = texture2D.GetPixels(); @@ -223,6 +226,10 @@ namespace Spine.Unity.Editor { EditorUtility.SetDirty(nonCompressedTexture); AssetDatabase.SaveAssets(); } + + if (hasOverridesToEnable) { + TextureImporterUtils.EnableOverrides(importer, disabledPlatforms); + } } placeholderTexture = AssetDatabase.LoadAssetAtPath(texturePath); } diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs new file mode 100644 index 000000000..4c6b78f3e --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; + +namespace Spine.Unity.Editor { + + /// + /// Utility class for working with TextureImporter. + /// + public static class TextureImporterUtils { + + private static IEnumerable GetAllPossiblePlatforms() { + BuildTarget[] buildTargets = (BuildTarget[])Enum.GetValues(typeof(BuildTarget)); + var platformNames = buildTargets.Select(x => x.ToString()).ToList(); + + // Add additional platforms that are not part of BuildTarget enum. + platformNames.Add("Server"); + + return platformNames.ToArray(); + } + + public static bool TryDisableOverrides(TextureImporter importer, out List disabledPlatforms) { + IEnumerable platforms = GetAllPossiblePlatforms(); + disabledPlatforms = new List(); + + foreach (string platform in platforms) { + var platformSettings = importer.GetPlatformTextureSettings(platform); + + if (!platformSettings.overridden) { + continue; + } + + disabledPlatforms.Add(platform); + platformSettings.overridden = false; + importer.SetPlatformTextureSettings(platformSettings); + } + + if (disabledPlatforms.Count <= 0) { + return false; + } + + importer.SaveAndReimport(); + return true; + } + + public static void EnableOverrides(TextureImporter importer, List platformsToEnable) { + if (platformsToEnable.Count == 0) { + return; + } + + foreach (string platform in platformsToEnable) { + var platformSettings = importer.GetPlatformTextureSettings(platform); + platformSettings.overridden = true; + importer.SetPlatformTextureSettings(platformSettings); + } + + importer.SaveAndReimport(); + } + } +} \ No newline at end of file diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs.meta b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs.meta new file mode 100644 index 000000000..201a599c5 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d7e6bbfca422433c9e60e78930eae065 +timeCreated: 1708382726 \ No newline at end of file From 580a91d8eea340c43edd6729484ead409d6c55e3 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 26 Feb 2024 16:46:05 +0100 Subject: [PATCH 6/8] [unity] Minor code adjustments following PR. (see #2461). --- .../GenericOnDemandTextureLoaderInspector.cs | 25 +++-- .../Editor/TextureImporterUtility.cs | 93 +++++++++++++++++++ ...cs.meta => TextureImporterUtility.cs.meta} | 0 .../Editor/TextureImporterUtils.cs | 61 ------------ .../Runtime/GenericOnDemandTextureLoader.cs | 8 +- .../package.json | 2 +- 6 files changed, 108 insertions(+), 81 deletions(-) create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs rename spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/{TextureImporterUtils.cs.meta => TextureImporterUtility.cs.meta} (100%) delete mode 100644 spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs index 6c135c349..49bc1fe47 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/GenericOnDemandTextureLoaderInspector.cs @@ -186,7 +186,8 @@ namespace Spine.Unity.Editor { } string originalTextureName = System.IO.Path.GetFileNameWithoutExtension(originalPath); - string texturePath = string.Format("{0}/{1}.png", dataPath, loader.GetPlaceholderTextureName(originalTextureName)); + string texturePath = string.Format("{0}/{1}.png", + dataPath, loader.GetPlaceholderTextureName(originalTextureName)); Texture placeholderTexture = AssetDatabase.LoadAssetAtPath(texturePath); if (placeholderTexture == null) { AssetDatabase.CopyAsset(originalPath, texturePath); @@ -203,33 +204,30 @@ namespace Spine.Unity.Editor { importer.SaveAndReimport(); if (resizePhysically) { - bool hasOverridesToEnable = - TextureImporterUtils.TryDisableOverrides(importer, out List disabledPlatforms); + bool hasOverrides = TextureImporterUtility.DisableOverrides(importer, out List disabledPlatforms); Texture2D texture2D = AssetDatabase.LoadAssetAtPath(texturePath); if (texture2D) { Color[] maxTextureSizePixels = texture2D.GetPixels(); - // SetPixels works only for non-compressed textures using certain formats. - var nonCompressedTexture = + // SetPixels supports only uncompressed textures using certain formats. + Texture2D uncompressedTexture = new Texture2D(texture2D.width, texture2D.height, TextureFormat.RGBA32, false); + uncompressedTexture.SetPixels(maxTextureSizePixels); - nonCompressedTexture.SetPixels(maxTextureSizePixels); - - var bytes = nonCompressedTexture.EncodeToPNG(); + byte[] bytes = uncompressedTexture.EncodeToPNG(); string targetPath = Application.dataPath + "/../" + texturePath; System.IO.File.WriteAllBytes(targetPath, bytes); importer.isReadable = false; importer.SaveAndReimport(); - EditorUtility.SetDirty(nonCompressedTexture); + EditorUtility.SetDirty(uncompressedTexture); AssetDatabase.SaveAssets(); } - if (hasOverridesToEnable) { - TextureImporterUtils.EnableOverrides(importer, disabledPlatforms); - } + if (hasOverrides) + TextureImporterUtility.EnableOverrides(importer, disabledPlatforms); } placeholderTexture = AssetDatabase.LoadAssetAtPath(texturePath); } @@ -390,9 +388,8 @@ namespace Spine.Unity.Editor { public void DeletePlaceholderTextures (GenericOnDemandTextureLoader loader) { foreach (var materialMap in loader.placeholderMap) { var textures = materialMap.textures; - if (textures == null || textures.Length == 0) { + if (textures == null || textures.Length == 0) continue; - } Texture texture = textures[0].placeholderTexture; if (texture) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs new file mode 100644 index 000000000..45777a87e --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs @@ -0,0 +1,93 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2024, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; + +namespace Spine.Unity.Editor { + + /// + /// Utility class for working with TextureImporter. + /// + public static class TextureImporterUtility { + + private static IEnumerable GetAllPlatforms() { + BuildTarget[] buildTargets = (BuildTarget[])Enum.GetValues(typeof(BuildTarget)); + var platformNames = buildTargets.Select(x => x.ToString()).ToList(); + + // Add additional platforms that are not part of BuildTarget enum. + platformNames.Add("Server"); + + return platformNames.ToArray(); + } + + /// Disables Texture Import settings platform overrides for all platforms. + /// The TextureImporter wrapper of the target texture asset. + /// A list populated with platforms where overrides were previously enabled and + /// which have now been disabled. + /// True if an override has been disabled for any platform, false otherwise. + public static bool DisableOverrides(TextureImporter importer, out List disabledPlatforms) { + IEnumerable platforms = GetAllPlatforms(); + disabledPlatforms = new List(); + + foreach (string platform in platforms) { + var platformSettings = importer.GetPlatformTextureSettings(platform); + if (!platformSettings.overridden) + continue; + + disabledPlatforms.Add(platform); + platformSettings.overridden = false; + importer.SetPlatformTextureSettings(platformSettings); + } + + if (disabledPlatforms.Count <= 0) + return false; + + importer.SaveAndReimport(); + return true; + } + + /// Enables Texture Import settings platform overrides for given platforms. + /// The TextureImporter wrapper of the target texture asset. + /// A list of platforms for which overrides shall be enabled. + public static void EnableOverrides(TextureImporter importer, List platformsToEnable) { + if (platformsToEnable.Count == 0) + return; + + foreach (string platform in platformsToEnable) { + TextureImporterPlatformSettings platformSettings = importer.GetPlatformTextureSettings(platform); + platformSettings.overridden = true; + importer.SetPlatformTextureSettings(platformSettings); + } + importer.SaveAndReimport(); + } + } +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs.meta b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs.meta similarity index 100% rename from spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs.meta rename to spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs.meta diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs deleted file mode 100644 index 4c6b78f3e..000000000 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtils.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEditor; - -namespace Spine.Unity.Editor { - - /// - /// Utility class for working with TextureImporter. - /// - public static class TextureImporterUtils { - - private static IEnumerable GetAllPossiblePlatforms() { - BuildTarget[] buildTargets = (BuildTarget[])Enum.GetValues(typeof(BuildTarget)); - var platformNames = buildTargets.Select(x => x.ToString()).ToList(); - - // Add additional platforms that are not part of BuildTarget enum. - platformNames.Add("Server"); - - return platformNames.ToArray(); - } - - public static bool TryDisableOverrides(TextureImporter importer, out List disabledPlatforms) { - IEnumerable platforms = GetAllPossiblePlatforms(); - disabledPlatforms = new List(); - - foreach (string platform in platforms) { - var platformSettings = importer.GetPlatformTextureSettings(platform); - - if (!platformSettings.overridden) { - continue; - } - - disabledPlatforms.Add(platform); - platformSettings.overridden = false; - importer.SetPlatformTextureSettings(platformSettings); - } - - if (disabledPlatforms.Count <= 0) { - return false; - } - - importer.SaveAndReimport(); - return true; - } - - public static void EnableOverrides(TextureImporter importer, List platformsToEnable) { - if (platformsToEnable.Count == 0) { - return; - } - - foreach (string platform in platformsToEnable) { - var platformSettings = importer.GetPlatformTextureSettings(platform); - platformSettings.overridden = true; - importer.SetPlatformTextureSettings(platformSettings); - } - - importer.SaveAndReimport(); - } - } -} \ No newline at end of file diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs index 17913689f..c929b7dfd 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Runtime/GenericOnDemandTextureLoader.cs @@ -195,10 +195,9 @@ namespace Spine.Unity { for (int i = 0, count = loadedDataAtMaterial.Length; i < count; ++i) { loadedDataAtMaterial[i].lastFrameRequested = -1; - var textures = placeholderMap[i].textures; - if (textures == null) { + PlaceholderTextureMapping[] textures = placeholderMap[i].textures; + if (textures == null) continue; - } int texturesAtMaterial = textures.Length; loadedDataAtMaterial[i].textureRequests = new TextureRequest[texturesAtMaterial]; @@ -270,9 +269,8 @@ namespace Spine.Unity { System.Action onTextureLoaded) { PlaceholderTextureMapping[] placeholderTextures = placeholderMap[materialIndex].textures; - if (placeholderTextures == null || textureIndex >= placeholderTextures.Length) { + if (placeholderTextures == null || textureIndex >= placeholderTextures.Length) return null; - } TargetReference targetReference = placeholderTextures[textureIndex].targetTextureReference; loadedDataAtMaterial[materialIndex].lastFrameRequested = Time.frameCount; diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/package.json b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/package.json index 61c36ba02..2268cefcc 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.on-demand-loading", "displayName": "Spine On-Demand Loading Extensions [Experimental]", "description": "This experimental plugin provides a generic basic implementation of on-demand texture loading for the spine-unity runtime. You might want to use the available com.esotericsoftware.spine.addressables package which depends on this package.\nPlease be sure to test this package first and create backups of your project before using.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime (via the spine-unity unitypackage), version 4.1.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.1.0-preview.3", + "version": "4.1.0-preview.4", "unity": "2018.3", "author": { "name": "Esoteric Software", From 54fac9d8d019ce85c91037fa664e0a449bc89f83 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 26 Feb 2024 16:51:05 +0100 Subject: [PATCH 7/8] [unity] Cosmetic: fixed code formatting of previous commit. --- .../Editor/TextureImporterUtility.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs index 45777a87e..4edb81a2d 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.on-demand-loading/Editor/TextureImporterUtility.cs @@ -39,7 +39,7 @@ namespace Spine.Unity.Editor { /// public static class TextureImporterUtility { - private static IEnumerable GetAllPlatforms() { + private static IEnumerable GetAllPlatforms () { BuildTarget[] buildTargets = (BuildTarget[])Enum.GetValues(typeof(BuildTarget)); var platformNames = buildTargets.Select(x => x.ToString()).ToList(); @@ -54,7 +54,7 @@ namespace Spine.Unity.Editor { /// A list populated with platforms where overrides were previously enabled and /// which have now been disabled. /// True if an override has been disabled for any platform, false otherwise. - public static bool DisableOverrides(TextureImporter importer, out List disabledPlatforms) { + public static bool DisableOverrides (TextureImporter importer, out List disabledPlatforms) { IEnumerable platforms = GetAllPlatforms(); disabledPlatforms = new List(); @@ -78,7 +78,7 @@ namespace Spine.Unity.Editor { /// Enables Texture Import settings platform overrides for given platforms. /// The TextureImporter wrapper of the target texture asset. /// A list of platforms for which overrides shall be enabled. - public static void EnableOverrides(TextureImporter importer, List platformsToEnable) { + public static void EnableOverrides (TextureImporter importer, List platformsToEnable) { if (platformsToEnable.Count == 0) return; From 804605972b0fd0cdbabe72302229f6b9ea52648b Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 26 Feb 2024 18:42:33 +0100 Subject: [PATCH 8/8] [unity] Hiding properties of SkeletonSubmeshGraphic in Inspector since they are controlled by parent SkeletonGraphic. --- .../SkeletonSubmeshGraphicInspector.cs | 43 +++++++++++++++++++ .../SkeletonSubmeshGraphicInspector.cs.meta | 11 +++++ spine-unity/Assets/Spine/package.json | 2 +- 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonSubmeshGraphicInspector.cs create mode 100644 spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonSubmeshGraphicInspector.cs.meta diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonSubmeshGraphicInspector.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonSubmeshGraphicInspector.cs new file mode 100644 index 000000000..a4a1cd950 --- /dev/null +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonSubmeshGraphicInspector.cs @@ -0,0 +1,43 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2024, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using UnityEditor; + +namespace Spine.Unity.Editor { + using Icons = SpineEditorUtilities.Icons; + + [CustomEditor(typeof(SkeletonSubmeshGraphic))] + [CanEditMultipleObjects] + public class SkeletonGraphicSubmeshInspector : UnityEditor.Editor { + + public override void OnInspectorGUI () { + EditorGUILayout.HelpBox("This component is manged by the parent SkeletonGraphic component.", MessageType.None); + } + } +} diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonSubmeshGraphicInspector.cs.meta b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonSubmeshGraphicInspector.cs.meta new file mode 100644 index 000000000..aa9fcb622 --- /dev/null +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonSubmeshGraphicInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1bc35530b2335ef4da1dafa6214b6ccd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index bc10d3828..22e6a9449 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.1.36", + "version": "4.1.37", "unity": "2018.3", "author": { "name": "Esoteric Software",