Skip to content

Commit

Permalink
Merge branch '4.1' into 4.2-beta
Browse files Browse the repository at this point in the history
  • Loading branch information
HaraldCsaszar committed Feb 26, 2024
2 parents 12d9945 + 8046059 commit f906fb0
Show file tree
Hide file tree
Showing 8 changed files with 184 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -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);
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion spine-unity/Assets/Spine/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.2.51",
"version": "4.2.52",
"unity": "2018.3",
"author": {
"name": "Esoteric Software",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@ public virtual Texture CreatePlaceholderTextureFor (Texture originalTexture, int
}

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<Texture>(texturePath);
if (placeholderTexture == null) {
AssetDatabase.CopyAsset(originalPath, texturePath);
Expand All @@ -203,18 +204,30 @@ public virtual Texture CreatePlaceholderTextureFor (Texture originalTexture, int
importer.SaveAndReimport();

if (resizePhysically) {
bool hasOverrides = TextureImporterUtility.DisableOverrides(importer, out List<string> disabledPlatforms);

Texture2D texture2D = AssetDatabase.LoadAssetAtPath<Texture2D>(texturePath);
if (texture2D) {
Color[] maxTextureSizePixels = texture2D.GetPixels();
texture2D.SetPixels(maxTextureSizePixels);

var bytes = texture2D.EncodeToPNG();
// SetPixels supports only uncompressed textures using certain formats.
Texture2D uncompressedTexture =
new Texture2D(texture2D.width, texture2D.height, TextureFormat.RGBA32, false);
uncompressedTexture.SetPixels(maxTextureSizePixels);

byte[] bytes = uncompressedTexture.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(uncompressedTexture);
AssetDatabase.SaveAssets();
}

if (hasOverrides)
TextureImporterUtility.EnableOverrides(importer, disabledPlatforms);
}
placeholderTexture = AssetDatabase.LoadAssetAtPath<Texture>(texturePath);
}
Expand Down Expand Up @@ -374,7 +387,11 @@ public override void OnInspectorGUI () {

public void DeletePlaceholderTextures (GenericOnDemandTextureLoader<TargetReference, TextureRequest> 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));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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 {

/// <summary>
/// Utility class for working with TextureImporter.
/// </summary>
public static class TextureImporterUtility {

private static IEnumerable<string> 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();
}

/// <summary>Disables Texture Import settings platform overrides for all platforms.</summary>
/// <param name="importer">The TextureImporter wrapper of the target texture asset.</param>
/// <param name="disabledPlatforms">A list populated with platforms where overrides were previously enabled and
/// which have now been disabled.</param>
/// <returns>True if an override has been disabled for any platform, false otherwise.</returns>
public static bool DisableOverrides (TextureImporter importer, out List<string> disabledPlatforms) {
IEnumerable<string> platforms = GetAllPlatforms();
disabledPlatforms = new List<string>();

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;
}

/// <summary>Enables Texture Import settings platform overrides for given platforms.</summary>
/// <param name="importer">The TextureImporter wrapper of the target texture asset.</param>
/// <param name="platformsToEnable">A list of platforms for which overrides shall be enabled.</param>
public static void EnableOverrides (TextureImporter importer, List<string> platformsToEnable) {
if (platformsToEnable.Count == 0)
return;

foreach (string platform in platformsToEnable) {
TextureImporterPlatformSettings platformSettings = importer.GetPlatformTextureSettings(platform);
platformSettings.overridden = true;
importer.SetPlatformTextureSettings(platformSettings);
}
importer.SaveAndReimport();
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,12 @@ public override void BeginCustomTextureLoading () {
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;

PlaceholderTextureMapping[] textures = placeholderMap[i].textures;
if (textures == null)
continue;

int texturesAtMaterial = textures.Length;
loadedDataAtMaterial[i].textureRequests = new TextureRequest[texturesAtMaterial];
}
}
Expand Down Expand Up @@ -264,6 +269,9 @@ protected virtual Texture RequestLoadTexture (Material material, int materialInd
System.Action<Texture> onTextureLoaded) {

PlaceholderTextureMapping[] placeholderTextures = placeholderMap[materialIndex].textures;
if (placeholderTextures == null || textureIndex >= placeholderTextures.Length)
return null;

TargetReference targetReference = placeholderTextures[textureIndex].targetTextureReference;
loadedDataAtMaterial[materialIndex].lastFrameRequested = Time.frameCount;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.2.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)",
"version": "4.2.0-preview.3",
"version": "4.2.0-preview.4",
"unity": "2018.3",
"author": {
"name": "Esoteric Software",
Expand Down

0 comments on commit f906fb0

Please sign in to comment.