mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[unity] Removed support for long abandoned thirdparty asset "2D Toolkit" (TK2D) by Unikron Software.
This commit is contained in:
parent
ff90da5848
commit
054f0139a8
@ -353,6 +353,7 @@
|
|||||||
- Removed `attachment.GetRemappedClone()` extension methods. Replace `attachment.GetRemappedClone(parameters)` with `attachment.Copy(); attachment.SetRegion(parameters)`. Removed `AttachmentCloneExtensions` class, `SetRegion` methods are now in `AttachmentRegionExtensions`.
|
- Removed `attachment.GetRemappedClone()` extension methods. Replace `attachment.GetRemappedClone(parameters)` with `attachment.Copy(); attachment.SetRegion(parameters)`. Removed `AttachmentCloneExtensions` class, `SetRegion` methods are now in `AttachmentRegionExtensions`.
|
||||||
- Renamed `ToAtlasRegionPMAClone` to `ToAtlasRegionWithNewPMATexture`.
|
- Renamed `ToAtlasRegionPMAClone` to `ToAtlasRegionWithNewPMATexture`.
|
||||||
- Renamed `ToRegionAttachmentPMAClone` to `ToRegionAttachmentWithNewPMATexture`.
|
- Renamed `ToRegionAttachmentPMAClone` to `ToRegionAttachmentWithNewPMATexture`.
|
||||||
|
- Removed support for long abandoned thirdparty asset "2D Toolkit" (TK2D) by Unikron Software.
|
||||||
|
|
||||||
- **Changes of default values**
|
- **Changes of default values**
|
||||||
- Changed default atlas texture workflow from PMA to straight alpha textures. This move was done because straight alpha textures are compatible with both Gamma and Linear color space, with the latter being the default for quite some time now in Unity. Note that `PMA Vertex Color` is unaffected and shall be enabled as usual to allow for single-pass additive rendering.
|
- Changed default atlas texture workflow from PMA to straight alpha textures. This move was done because straight alpha textures are compatible with both Gamma and Linear color space, with the latter being the default for quite some time now in Unity. Note that `PMA Vertex Color` is unaffected and shall be enabled as usual to allow for single-pass additive rendering.
|
||||||
|
|||||||
@ -56,9 +56,6 @@ namespace Spine.Unity.Editor {
|
|||||||
SerializedProperty atlasAssets, skeletonJSON, scale, fromAnimation, toAnimation, duration, defaultMix;
|
SerializedProperty atlasAssets, skeletonJSON, scale, fromAnimation, toAnimation, duration, defaultMix;
|
||||||
SerializedProperty skeletonDataModifiers;
|
SerializedProperty skeletonDataModifiers;
|
||||||
SerializedProperty blendModeMaterials;
|
SerializedProperty blendModeMaterials;
|
||||||
#if SPINE_TK2D
|
|
||||||
SerializedProperty spriteCollection;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SPINE_SKELETON_MECANIM
|
#if SPINE_SKELETON_MECANIM
|
||||||
static bool isMecanimExpanded = false;
|
static bool isMecanimExpanded = false;
|
||||||
@ -121,13 +118,8 @@ namespace Spine.Unity.Editor {
|
|||||||
controller = serializedObject.FindProperty("controller");
|
controller = serializedObject.FindProperty("controller");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
if (newAtlasAssets) atlasAssets.isExpanded = false;
|
|
||||||
spriteCollection = serializedObject.FindProperty("spriteCollection");
|
|
||||||
#else
|
|
||||||
// Analysis disable once ConvertIfToOrExpression
|
// Analysis disable once ConvertIfToOrExpression
|
||||||
if (newAtlasAssets) atlasAssets.isExpanded = true;
|
if (newAtlasAssets) atlasAssets.isExpanded = true;
|
||||||
#endif
|
|
||||||
|
|
||||||
// This handles the case where the managed editor assembly is unloaded before recompilation when code changes.
|
// This handles the case where the managed editor assembly is unloaded before recompilation when code changes.
|
||||||
AppDomain.CurrentDomain.DomainUnload -= OnDomainUnload;
|
AppDomain.CurrentDomain.DomainUnload -= OnDomainUnload;
|
||||||
@ -247,15 +239,11 @@ namespace Spine.Unity.Editor {
|
|||||||
DrawUnityTools();
|
DrawUnityTools();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
#if !SPINE_TK2D
|
|
||||||
// Draw Reimport Button
|
// Draw Reimport Button
|
||||||
using (new EditorGUI.DisabledGroupScope(skeletonJSON.objectReferenceValue == null)) {
|
using (new EditorGUI.DisabledGroupScope(skeletonJSON.objectReferenceValue == null)) {
|
||||||
if (GUILayout.Button(SpineInspectorUtility.TempContent("Attempt Reimport", Icons.warning)))
|
if (GUILayout.Button(SpineInspectorUtility.TempContent("Attempt Reimport", Icons.warning)))
|
||||||
DoReimport();
|
DoReimport();
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
EditorGUILayout.HelpBox("Couldn't load SkeletonData.", MessageType.Error);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DrawWarningList();
|
DrawWarningList();
|
||||||
}
|
}
|
||||||
@ -350,15 +338,7 @@ namespace Spine.Unity.Editor {
|
|||||||
// Texture source field.
|
// Texture source field.
|
||||||
using (new SpineInspectorUtility.BoxScope()) {
|
using (new SpineInspectorUtility.BoxScope()) {
|
||||||
EditorGUILayout.LabelField("Atlas", EditorStyles.boldLabel);
|
EditorGUILayout.LabelField("Atlas", EditorStyles.boldLabel);
|
||||||
#if !SPINE_TK2D
|
|
||||||
EditorGUILayout.PropertyField(atlasAssets, true);
|
EditorGUILayout.PropertyField(atlasAssets, true);
|
||||||
#else
|
|
||||||
using (new EditorGUI.DisabledGroupScope(spriteCollection.objectReferenceValue != null)) {
|
|
||||||
EditorGUILayout.PropertyField(atlasAssets, true);
|
|
||||||
}
|
|
||||||
EditorGUILayout.LabelField("spine-tk2d", EditorStyles.boldLabel);
|
|
||||||
EditorGUILayout.PropertyField(spriteCollection, true);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mix settings.
|
// Mix settings.
|
||||||
@ -430,15 +410,7 @@ namespace Spine.Unity.Editor {
|
|||||||
EditorGUILayout.LabelField("Atlas", EditorStyles.boldLabel);
|
EditorGUILayout.LabelField("Atlas", EditorStyles.boldLabel);
|
||||||
|
|
||||||
using (var changeCheck = new EditorGUI.ChangeCheckScope()) {
|
using (var changeCheck = new EditorGUI.ChangeCheckScope()) {
|
||||||
#if !SPINE_TK2D
|
|
||||||
EditorGUILayout.PropertyField(atlasAssets, true);
|
EditorGUILayout.PropertyField(atlasAssets, true);
|
||||||
#else
|
|
||||||
using (new EditorGUI.DisabledGroupScope(spriteCollection.objectReferenceValue != null)) {
|
|
||||||
EditorGUILayout.PropertyField(atlasAssets, true);
|
|
||||||
}
|
|
||||||
EditorGUILayout.LabelField("spine-tk2d", EditorStyles.boldLabel);
|
|
||||||
EditorGUILayout.PropertyField(spriteCollection, true);
|
|
||||||
#endif
|
|
||||||
if (atlasAssets.arraySize == 0)
|
if (atlasAssets.arraySize == 0)
|
||||||
EditorGUILayout.HelpBox("AtlasAssets array is empty. Skeleton's attachments will load without being mapped to images.", MessageType.Info);
|
EditorGUILayout.HelpBox("AtlasAssets array is empty. Skeleton's attachments will load without being mapped to images.", MessageType.Info);
|
||||||
|
|
||||||
@ -703,14 +675,8 @@ namespace Spine.Unity.Editor {
|
|||||||
else
|
else
|
||||||
warnings.Add("Skeleton data file is not a valid Spine JSON or binary file.");
|
warnings.Add("Skeleton data file is not a valid Spine JSON or binary file.");
|
||||||
} else {
|
} else {
|
||||||
#if SPINE_TK2D
|
|
||||||
bool searchForSpineAtlasAssets = (compatibilityProblemInfo == null);
|
|
||||||
bool isSpriteCollectionNull = spriteCollection.objectReferenceValue == null;
|
|
||||||
if (!isSpriteCollectionNull) searchForSpineAtlasAssets = false;
|
|
||||||
#else
|
|
||||||
// Analysis disable once ConvertToConstant.Local
|
// Analysis disable once ConvertToConstant.Local
|
||||||
bool searchForSpineAtlasAssets = (compatibilityProblemInfo == null);
|
bool searchForSpineAtlasAssets = (compatibilityProblemInfo == null);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (searchForSpineAtlasAssets) {
|
if (searchForSpineAtlasAssets) {
|
||||||
bool detectedNullAtlasEntry = false;
|
bool detectedNullAtlasEntry = false;
|
||||||
@ -744,10 +710,6 @@ namespace Spine.Unity.Editor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
if (missingPaths.Count > 0)
|
|
||||||
warnings.Add("Missing regions. SkeletonData asset requires tk2DSpriteCollectionData or Spine AtlasAssets.");
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (missingPaths != null) {
|
if (missingPaths != null) {
|
||||||
|
|||||||
@ -434,9 +434,6 @@ namespace Spine.Unity.Editor {
|
|||||||
|
|
||||||
string dir = Path.GetDirectoryName(skeletonPath).Replace('\\', '/');
|
string dir = Path.GetDirectoryName(skeletonPath).Replace('\\', '/');
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
IngestSpineProject(loadedAsset, null);
|
|
||||||
#else
|
|
||||||
string skeletonName = Path.GetFileNameWithoutExtension(skeletonPath);
|
string skeletonName = Path.GetFileNameWithoutExtension(skeletonPath);
|
||||||
List<string> requiredPaths = GetRequiredAtlasRegions(skeletonPath);
|
List<string> requiredPaths = GetRequiredAtlasRegions(skeletonPath);
|
||||||
|
|
||||||
@ -470,7 +467,6 @@ namespace Spine.Unity.Editor {
|
|||||||
|
|
||||||
if (abortSkeletonImport)
|
if (abortSkeletonImport)
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atlasPaths.Count > 0 || imagePaths.Count > 0 || skeletonPaths.Count > 0) {
|
if (atlasPaths.Count > 0 || imagePaths.Count > 0 || skeletonPaths.Count > 0) {
|
||||||
@ -1123,32 +1119,6 @@ namespace Spine.Unity.Editor {
|
|||||||
internal static SkeletonDataAsset IngestSpineProject (TextAsset spineJson, params AtlasAssetBase[] atlasAssets) {
|
internal static SkeletonDataAsset IngestSpineProject (TextAsset spineJson, params AtlasAssetBase[] atlasAssets) {
|
||||||
string filePath = GetSkeletonDataAssetFilePath(spineJson);
|
string filePath = GetSkeletonDataAssetFilePath(spineJson);
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
if (spineJson != null) {
|
|
||||||
SkeletonDataAsset skeletonDataAsset = (SkeletonDataAsset)AssetDatabase.LoadAssetAtPath(filePath, typeof(SkeletonDataAsset));
|
|
||||||
if (skeletonDataAsset == null) {
|
|
||||||
skeletonDataAsset = SkeletonDataAsset.CreateInstance<SkeletonDataAsset>();
|
|
||||||
skeletonDataAsset.skeletonJSON = spineJson;
|
|
||||||
skeletonDataAsset.fromAnimation = new string[0];
|
|
||||||
skeletonDataAsset.toAnimation = new string[0];
|
|
||||||
skeletonDataAsset.duration = new float[0];
|
|
||||||
skeletonDataAsset.defaultMix = SpineEditorUtilities.Preferences.defaultMix;
|
|
||||||
skeletonDataAsset.scale = SpineEditorUtilities.Preferences.defaultScale;
|
|
||||||
|
|
||||||
AssetDatabase.CreateAsset(skeletonDataAsset, filePath);
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
} else {
|
|
||||||
SpineEditorUtilities.ClearSkeletonDataAsset(targetSkeletonDataAsset);
|
|
||||||
skeletonDataAsset.GetSkeletonData(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return skeletonDataAsset;
|
|
||||||
} else {
|
|
||||||
EditorUtility.DisplayDialog("Error!", "Tried to ingest null Spine data.", "OK");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
if (spineJson != null && atlasAssets != null) {
|
if (spineJson != null && atlasAssets != null) {
|
||||||
SkeletonDataAsset skeletonDataAsset = (SkeletonDataAsset)AssetDatabase.LoadAssetAtPath(filePath, typeof(SkeletonDataAsset));
|
SkeletonDataAsset skeletonDataAsset = (SkeletonDataAsset)AssetDatabase.LoadAssetAtPath(filePath, typeof(SkeletonDataAsset));
|
||||||
if (skeletonDataAsset == null) {
|
if (skeletonDataAsset == null) {
|
||||||
@ -1175,7 +1145,6 @@ namespace Spine.Unity.Editor {
|
|||||||
EditorUtility.DisplayDialog("Error!", "Must specify both Spine JSON and AtlasAsset array", "OK");
|
EditorUtility.DisplayDialog("Error!", "Must specify both Spine JSON and AtlasAsset array", "OK");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@ -57,34 +57,6 @@ using UnityEditor;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Spine.Unity.Editor {
|
namespace Spine.Unity.Editor {
|
||||||
public partial class SpineEditorUtilities {
|
|
||||||
public static class SpineTK2DEditorUtility {
|
|
||||||
const string SPINE_TK2D_DEFINE = "SPINE_TK2D";
|
|
||||||
|
|
||||||
internal static bool IsTK2DInstalled () {
|
|
||||||
return (Shader.Find("tk2d/SolidVertexColor") != null ||
|
|
||||||
Shader.Find("tk2d/AdditiveVertexColor") != null);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static bool IsTK2DAllowed {
|
|
||||||
get {
|
|
||||||
return false; // replace with "return true;" to allow TK2D support
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static void EnableTK2D () {
|
|
||||||
if (!IsTK2DAllowed)
|
|
||||||
return;
|
|
||||||
SpineBuildEnvUtility.DisableSpineAsmdefFiles();
|
|
||||||
SpineBuildEnvUtility.EnableBuildDefine(SPINE_TK2D_DEFINE);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static void DisableTK2D () {
|
|
||||||
SpineBuildEnvUtility.EnableSpineAsmdefFiles();
|
|
||||||
SpineBuildEnvUtility.DisableBuildDefine(SPINE_TK2D_DEFINE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class SpineBuildEnvUtility {
|
public static class SpineBuildEnvUtility {
|
||||||
public const string SPINE_ALLOW_UNSAFE_CODE = "SPINE_ALLOW_UNSAFE";
|
public const string SPINE_ALLOW_UNSAFE_CODE = "SPINE_ALLOW_UNSAFE";
|
||||||
|
|||||||
@ -442,30 +442,6 @@ namespace Spine.Unity.Editor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SPINE_TK2D_DEFINE
|
|
||||||
bool isTK2DDefineSet = true;
|
|
||||||
#else
|
|
||||||
bool isTK2DDefineSet = false;
|
|
||||||
#endif
|
|
||||||
bool isTK2DAllowed = SpineTK2DEditorUtility.IsTK2DAllowed;
|
|
||||||
if (SpineTK2DEditorUtility.IsTK2DInstalled() || isTK2DDefineSet) {
|
|
||||||
GUILayout.Space(20);
|
|
||||||
EditorGUILayout.LabelField("3rd Party Settings", EditorStyles.boldLabel);
|
|
||||||
using (new GUILayout.HorizontalScope()) {
|
|
||||||
EditorGUILayout.PrefixLabel("Define TK2D");
|
|
||||||
if (isTK2DAllowed && GUILayout.Button("Enable", GUILayout.Width(64)))
|
|
||||||
SpineTK2DEditorUtility.EnableTK2D();
|
|
||||||
if (GUILayout.Button("Disable", GUILayout.Width(64)))
|
|
||||||
SpineTK2DEditorUtility.DisableTK2D();
|
|
||||||
}
|
|
||||||
#if !SPINE_TK2D_DEFINE
|
|
||||||
if (!isTK2DAllowed) {
|
|
||||||
EditorGUILayout.LabelField("To allow TK2D support, please modify line 67 in", EditorStyles.boldLabel);
|
|
||||||
EditorGUILayout.LabelField("Spine/Editor/spine-unity/Editor/Util./BuildSettings.cs", EditorStyles.boldLabel);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
GUILayout.Space(20);
|
GUILayout.Space(20);
|
||||||
EditorGUILayout.LabelField("Automatic Component Upgrade", EditorStyles.boldLabel);
|
EditorGUILayout.LabelField("Automatic Component Upgrade", EditorStyles.boldLabel);
|
||||||
#if SPINE_AUTO_UPGRADE_COMPONENTS_OFF
|
#if SPINE_AUTO_UPGRADE_COMPONENTS_OFF
|
||||||
|
|||||||
@ -84,11 +84,7 @@ namespace Spine.Unity.Editor {
|
|||||||
|
|
||||||
public const string SPINE_SETTINGS_ASSET_PATH = "Assets/Editor/SpineSettings.asset";
|
public const string SPINE_SETTINGS_ASSET_PATH = "Assets/Editor/SpineSettings.asset";
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
internal const float DEFAULT_DEFAULT_SCALE = 1f;
|
|
||||||
#else
|
|
||||||
internal const float DEFAULT_DEFAULT_SCALE = 0.01f;
|
internal const float DEFAULT_DEFAULT_SCALE = 0.01f;
|
||||||
#endif
|
|
||||||
public float defaultScale = DEFAULT_DEFAULT_SCALE;
|
public float defaultScale = DEFAULT_DEFAULT_SCALE;
|
||||||
|
|
||||||
internal const float DEFAULT_DEFAULT_MIX = 0.2f;
|
internal const float DEFAULT_DEFAULT_MIX = 0.2f;
|
||||||
@ -485,30 +481,6 @@ namespace Spine.Unity.Editor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SPINE_TK2D_DEFINE
|
|
||||||
bool isTK2DDefineSet = true;
|
|
||||||
#else
|
|
||||||
bool isTK2DDefineSet = false;
|
|
||||||
#endif
|
|
||||||
bool isTK2DAllowed = SpineEditorUtilities.SpineTK2DEditorUtility.IsTK2DAllowed;
|
|
||||||
if (SpineEditorUtilities.SpineTK2DEditorUtility.IsTK2DInstalled() || isTK2DDefineSet) {
|
|
||||||
GUILayout.Space(20);
|
|
||||||
EditorGUILayout.LabelField("3rd Party Settings", EditorStyles.boldLabel);
|
|
||||||
using (new GUILayout.HorizontalScope()) {
|
|
||||||
EditorGUILayout.PrefixLabel("Define TK2D");
|
|
||||||
if (GUILayout.Button("Disable", GUILayout.Width(64)))
|
|
||||||
SpineEditorUtilities.SpineTK2DEditorUtility.DisableTK2D();
|
|
||||||
if (isTK2DAllowed && GUILayout.Button("Enable", GUILayout.Width(64)))
|
|
||||||
SpineEditorUtilities.SpineTK2DEditorUtility.EnableTK2D();
|
|
||||||
}
|
|
||||||
#if !SPINE_TK2D_DEFINE
|
|
||||||
if (!isTK2DAllowed) {
|
|
||||||
EditorGUILayout.LabelField("To allow TK2D support, please modify line 67 in", EditorStyles.boldLabel);
|
|
||||||
EditorGUILayout.LabelField("Spine/Editor/spine-unity/Editor/Util./BuildSettings.cs", EditorStyles.boldLabel);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
GUILayout.Space(20);
|
GUILayout.Space(20);
|
||||||
EditorGUILayout.LabelField("Threading Defaults", EditorStyles.boldLabel);
|
EditorGUILayout.LabelField("Threading Defaults", EditorStyles.boldLabel);
|
||||||
{
|
{
|
||||||
|
|||||||
@ -66,12 +66,7 @@ namespace Spine.Unity {
|
|||||||
#region Inspector
|
#region Inspector
|
||||||
public AtlasAssetBase[] atlasAssets = new AtlasAssetBase[0];
|
public AtlasAssetBase[] atlasAssets = new AtlasAssetBase[0];
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
public tk2dSpriteCollectionData spriteCollection;
|
|
||||||
public float scale = 1f;
|
|
||||||
#else
|
|
||||||
public float scale = 0.01f;
|
public float scale = 0.01f;
|
||||||
#endif
|
|
||||||
public TextAsset skeletonJSON;
|
public TextAsset skeletonJSON;
|
||||||
|
|
||||||
public bool isUpgradingBlendModeMaterials = false;
|
public bool isUpgradingBlendModeMaterials = false;
|
||||||
@ -173,17 +168,10 @@ namespace Spine.Unity {
|
|||||||
// Clear();
|
// Clear();
|
||||||
// return null;
|
// return null;
|
||||||
// }
|
// }
|
||||||
// #if !SPINE_TK2D
|
|
||||||
// if (atlasAssets.Length == 0) {
|
// if (atlasAssets.Length == 0) {
|
||||||
// Clear();
|
// Clear();
|
||||||
// return null;
|
// return null;
|
||||||
// }
|
// }
|
||||||
// #else
|
|
||||||
// if (atlasAssets.Length == 0 && spriteCollection == null) {
|
|
||||||
// Clear();
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
if (skeletonData != null)
|
if (skeletonData != null)
|
||||||
return skeletonData;
|
return skeletonData;
|
||||||
@ -192,23 +180,8 @@ namespace Spine.Unity {
|
|||||||
float skeletonDataScale;
|
float skeletonDataScale;
|
||||||
Atlas[] atlasArray = this.GetAtlasArray();
|
Atlas[] atlasArray = this.GetAtlasArray();
|
||||||
|
|
||||||
#if !SPINE_TK2D
|
|
||||||
attachmentLoader = (atlasArray.Length == 0) ? (AttachmentLoader)new RegionlessAttachmentLoader() : (AttachmentLoader)new AtlasAttachmentLoader(atlasArray);
|
attachmentLoader = (atlasArray.Length == 0) ? (AttachmentLoader)new RegionlessAttachmentLoader() : (AttachmentLoader)new AtlasAttachmentLoader(atlasArray);
|
||||||
skeletonDataScale = scale;
|
skeletonDataScale = scale;
|
||||||
#else
|
|
||||||
if (spriteCollection != null) {
|
|
||||||
attachmentLoader = new Spine.Unity.TK2D.SpriteCollectionAttachmentLoader(spriteCollection);
|
|
||||||
skeletonDataScale = (1.0f / (spriteCollection.invOrthoSize * spriteCollection.halfTargetHeight) * scale);
|
|
||||||
} else {
|
|
||||||
if (atlasArray.Length == 0) {
|
|
||||||
Reset();
|
|
||||||
if (!quiet) Debug.LogError("Atlas not set for SkeletonData asset: " + name, this);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
attachmentLoader = new AtlasAttachmentLoader(atlasArray);
|
|
||||||
skeletonDataScale = scale;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool hasBinaryExtension = skeletonJSON.name.ToLower().Contains(".skel");
|
bool hasBinaryExtension = skeletonJSON.name.ToLower().Contains(".skel");
|
||||||
SkeletonData loadedSkeletonData = null;
|
SkeletonData loadedSkeletonData = null;
|
||||||
|
|||||||
@ -282,13 +282,8 @@ namespace Spine.Unity {
|
|||||||
totalRawVertexCount += attachmentVertexCount;
|
totalRawVertexCount += attachmentVertexCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !SPINE_TK2D
|
|
||||||
if (material == null && rendererObject != null)
|
if (material == null && rendererObject != null)
|
||||||
current.material = (Material)((AtlasRegion)rendererObject).page.rendererObject;
|
current.material = (Material)((AtlasRegion)rendererObject).page.rendererObject;
|
||||||
#else
|
|
||||||
if (material == null && rendererObject != null)
|
|
||||||
current.material = (rendererObject is Material) ? (Material)rendererObject : (Material)((AtlasRegion)rendererObject).page.rendererObject;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
instructionOutput.hasActiveClipping = skeletonHasClipping;
|
instructionOutput.hasActiveClipping = skeletonHasClipping;
|
||||||
instructionOutput.rawVertexCount = totalRawVertexCount;
|
instructionOutput.rawVertexCount = totalRawVertexCount;
|
||||||
@ -309,9 +304,6 @@ namespace Spine.Unity {
|
|||||||
|
|
||||||
public static bool RequiresMultipleSubmeshesByDrawOrder (Skeleton skeleton) {
|
public static bool RequiresMultipleSubmeshesByDrawOrder (Skeleton skeleton) {
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
ExposedList<Slot> drawOrder = skeleton.DrawOrder;
|
ExposedList<Slot> drawOrder = skeleton.DrawOrder;
|
||||||
int drawOrderCount = drawOrder.Count;
|
int drawOrderCount = drawOrder.Count;
|
||||||
Slot[] drawOrderItems = drawOrder.Items;
|
Slot[] drawOrderItems = drawOrder.Items;
|
||||||
@ -366,9 +358,7 @@ namespace Spine.Unity {
|
|||||||
preActiveClippingSlotSource = -1
|
preActiveClippingSlotSource = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
#if !SPINE_TK2D
|
|
||||||
bool isCustomSlotMaterialsPopulated = customSlotMaterials != null && customSlotMaterials.Count > 0;
|
bool isCustomSlotMaterialsPopulated = customSlotMaterials != null && customSlotMaterials.Count > 0;
|
||||||
#endif
|
|
||||||
|
|
||||||
int separatorCount = separatorSlots == null ? 0 : separatorSlots.Count;
|
int separatorCount = separatorSlots == null ? 0 : separatorSlots.Count;
|
||||||
bool hasSeparators = separatorCount > 0;
|
bool hasSeparators = separatorCount > 0;
|
||||||
@ -467,7 +457,6 @@ namespace Spine.Unity {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
#if !SPINE_TK2D
|
|
||||||
Material material;
|
Material material;
|
||||||
if (isCustomSlotMaterialsPopulated) {
|
if (isCustomSlotMaterialsPopulated) {
|
||||||
if (!customSlotMaterials.TryGetValue(slot, out material))
|
if (!customSlotMaterials.TryGetValue(slot, out material))
|
||||||
@ -475,10 +464,6 @@ namespace Spine.Unity {
|
|||||||
} else {
|
} else {
|
||||||
material = (Material)((AtlasRegion)region).page.rendererObject;
|
material = (Material)((AtlasRegion)region).page.rendererObject;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
// An AtlasRegion in plain spine-unity, spine-TK2D hooks into TK2D's system. eventual source of Material object.
|
|
||||||
Material material = (region is Material) ? (Material)region : (Material)((AtlasRegion)region).page.rendererObject;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !SPINE_TRIANGLECHECK
|
#if !SPINE_TRIANGLECHECK
|
||||||
if (current.forceSeparate || !System.Object.ReferenceEquals(current.material, material)) { // Material changed. Add the previous submesh.
|
if (current.forceSeparate || !System.Object.ReferenceEquals(current.material, material)) { // Material changed. Add the previous submesh.
|
||||||
|
|||||||
@ -1,9 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e70d3026a0242e5418232b2015be29f7
|
|
||||||
folderAsset: yes
|
|
||||||
timeCreated: 1456509301
|
|
||||||
licenseType: Free
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,163 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Spine Runtimes License Agreement
|
|
||||||
* Last updated April 5, 2025. Replaces all prior versions.
|
|
||||||
*
|
|
||||||
* Copyright (c) 2013-2026, 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
using Spine;
|
|
||||||
using System;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
// MITCH: handle TPackerCW flip mode (probably not swap uv horizontaly)
|
|
||||||
namespace Spine.Unity.TK2D {
|
|
||||||
public class SpriteCollectionAttachmentLoader : AttachmentLoader {
|
|
||||||
private tk2dSpriteCollectionData sprites;
|
|
||||||
private float u, v, u2, v2;
|
|
||||||
private bool regionRotated;
|
|
||||||
private float regionOriginalWidth, regionOriginalHeight;
|
|
||||||
private float regionWidth, regionHeight;
|
|
||||||
private float regionOffsetX, regionOffsetY;
|
|
||||||
private Material material;
|
|
||||||
|
|
||||||
public SpriteCollectionAttachmentLoader (tk2dSpriteCollectionData sprites) {
|
|
||||||
if (sprites == null)
|
|
||||||
throw new ArgumentNullException("sprites cannot be null.");
|
|
||||||
this.sprites = sprites;
|
|
||||||
}
|
|
||||||
|
|
||||||
private AtlasRegion ProcessSpriteDefinition (String name) {
|
|
||||||
// Strip folder names.
|
|
||||||
int index = name.LastIndexOfAny(new char[] { '/', '\\' });
|
|
||||||
if (index != -1)
|
|
||||||
name = name.Substring(index + 1);
|
|
||||||
|
|
||||||
tk2dSpriteDefinition def = sprites.inst.GetSpriteDefinition(name);
|
|
||||||
|
|
||||||
if (def == null) {
|
|
||||||
Debug.Log("Sprite not found in atlas: " + name, sprites);
|
|
||||||
throw new Exception("Sprite not found in atlas: " + name);
|
|
||||||
}
|
|
||||||
if (def.complexGeometry)
|
|
||||||
throw new NotImplementedException("Complex geometry is not supported: " + name);
|
|
||||||
if (def.flipped == tk2dSpriteDefinition.FlipMode.TPackerCW)
|
|
||||||
throw new NotImplementedException("Only 2D Toolkit atlases are supported: " + name);
|
|
||||||
|
|
||||||
Vector2 minTexCoords = Vector2.one, maxTexCoords = Vector2.zero;
|
|
||||||
for (int i = 0; i < def.uvs.Length; ++i) {
|
|
||||||
Vector2 uv = def.uvs[i];
|
|
||||||
minTexCoords = Vector2.Min(minTexCoords, uv);
|
|
||||||
maxTexCoords = Vector2.Max(maxTexCoords, uv);
|
|
||||||
}
|
|
||||||
regionRotated = def.flipped == tk2dSpriteDefinition.FlipMode.Tk2d;
|
|
||||||
if (regionRotated) {
|
|
||||||
float temp = minTexCoords.x;
|
|
||||||
minTexCoords.x = maxTexCoords.x;
|
|
||||||
maxTexCoords.x = temp;
|
|
||||||
}
|
|
||||||
u = minTexCoords.x;
|
|
||||||
v = maxTexCoords.y;
|
|
||||||
u2 = maxTexCoords.x;
|
|
||||||
v2 = minTexCoords.y;
|
|
||||||
|
|
||||||
regionOriginalWidth = (int)(def.untrimmedBoundsData[1].x / def.texelSize.x);
|
|
||||||
regionOriginalHeight = (int)(def.untrimmedBoundsData[1].y / def.texelSize.y);
|
|
||||||
|
|
||||||
regionWidth = (int)(def.boundsData[1].x / def.texelSize.x);
|
|
||||||
regionHeight = (int)(def.boundsData[1].y / def.texelSize.y);
|
|
||||||
if (regionRotated) {
|
|
||||||
float tempSwap = regionWidth;
|
|
||||||
regionWidth = regionHeight;
|
|
||||||
regionHeight = tempSwap;
|
|
||||||
}
|
|
||||||
|
|
||||||
float x0 = def.untrimmedBoundsData[0].x - def.untrimmedBoundsData[1].x / 2;
|
|
||||||
float x1 = def.boundsData[0].x - def.boundsData[1].x / 2;
|
|
||||||
regionOffsetX = (int)((x1 - x0) / def.texelSize.x);
|
|
||||||
|
|
||||||
float y0 = def.untrimmedBoundsData[0].y - def.untrimmedBoundsData[1].y / 2;
|
|
||||||
float y1 = def.boundsData[0].y - def.boundsData[1].y / 2;
|
|
||||||
regionOffsetY = (int)((y1 - y0) / def.texelSize.y);
|
|
||||||
|
|
||||||
material = def.materialInst;
|
|
||||||
|
|
||||||
AtlasRegion region = new AtlasRegion();
|
|
||||||
region.name = name;
|
|
||||||
AtlasPage page = new AtlasPage();
|
|
||||||
page.rendererObject = material;
|
|
||||||
region.page = page;
|
|
||||||
region.u = u;
|
|
||||||
region.v = v;
|
|
||||||
region.u2 = u2;
|
|
||||||
region.v2 = v2;
|
|
||||||
region.rotate = regionRotated;
|
|
||||||
region.degrees = regionRotated ? 90 : 0;
|
|
||||||
region.originalWidth = (int)regionOriginalWidth;
|
|
||||||
region.originalHeight = (int)regionOriginalHeight;
|
|
||||||
region.width = (int)regionWidth;
|
|
||||||
region.height = (int)regionHeight;
|
|
||||||
region.offsetX = regionOffsetX;
|
|
||||||
region.offsetY = regionOffsetY;
|
|
||||||
return region;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadSequence (string name, string basePath, Sequence sequence) {
|
|
||||||
TextureRegion[] regions = sequence.Regions;
|
|
||||||
for (int i = 0, n = regions.Length; i < n; i++) {
|
|
||||||
string path = sequence.GetPath(basePath, i);
|
|
||||||
regions[i] = ProcessSpriteDefinition(path);
|
|
||||||
if (regions[i] == null) throw new ArgumentException(string.Format("Region not found in atlas: {0} (region attachment: {1})", path, name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public RegionAttachment NewRegionAttachment (Skin skin, String name, String path, Sequence sequence) {
|
|
||||||
LoadSequence(name, path, sequence);
|
|
||||||
return new RegionAttachment(name, sequence);
|
|
||||||
}
|
|
||||||
|
|
||||||
public MeshAttachment NewMeshAttachment (Skin skin, String name, String path, Sequence sequence) {
|
|
||||||
LoadSequence(name, path, sequence);
|
|
||||||
return new MeshAttachment(name, sequence);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BoundingBoxAttachment NewBoundingBoxAttachment (Skin skin, String name) {
|
|
||||||
return new BoundingBoxAttachment(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PathAttachment NewPathAttachment (Skin skin, string name) {
|
|
||||||
return new PathAttachment(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PointAttachment NewPointAttachment (Skin skin, string name) {
|
|
||||||
return new PointAttachment(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClippingAttachment NewClippingAttachment (Skin skin, string name) {
|
|
||||||
return new ClippingAttachment(name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 03238e4a73953c045a6cb289162532f3
|
|
||||||
MonoImporter:
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
@ -237,11 +237,7 @@ namespace Spine.Unity {
|
|||||||
if (rendererObject == null)
|
if (rendererObject == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
#if SPINE_TK2D
|
|
||||||
return (rendererObject.GetType() == typeof(Material)) ? (Material)rendererObject : (Material)((AtlasRegion)rendererObject).page.rendererObject;
|
|
||||||
#else
|
|
||||||
return (Material)((AtlasRegion)rendererObject).page.rendererObject;
|
return (Material)((AtlasRegion)rendererObject).page.rendererObject;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Fills a Vector2 buffer with local vertices.</summary>
|
/// <summary>Fills a Vector2 buffer with local vertices.</summary>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user