From cb615007d6d0530579968fcd918304d5928e360d Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 30 Apr 2019 18:07:51 +0200 Subject: [PATCH 1/7] [unity] Added support for Timeline in Unity 2019, using existing components. Please visit Edit-Preferences-Spine to enable Timeline support. Closes #1326. --- .../Editor/SpineEditorUtilities.cs | 284 +++++++++++++----- .../Editor/SpineSkeletonFlipDrawer.cs | 4 +- .../SkeletonAnimationPlayableHandle.cs | 2 +- .../SpineAnimationStateBehaviour.cs | 2 +- .../SpineAnimationStateClip.cs | 2 +- .../SpineAnimationStateMixerBehaviour.cs | 2 +- .../SpineAnimationStateTrack.cs | 2 +- .../SpineSkeletonFlipBehaviour.cs | 4 +- .../SpineSkeletonFlipClip.cs | 2 +- .../SpineSkeletonFlipMixerBehaviour.cs | 2 +- .../SpineSkeletonFlipTrack.cs | 2 +- 11 files changed, 227 insertions(+), 81 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs index 4c8d172f4..c333f811c 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs @@ -45,6 +45,10 @@ #define NEWHIERARCHYWINDOWCALLBACKS #endif +#if UNITY_2019_1_OR_NEWER +#define NEW_TIMELINE_AS_PACKAGE +#endif + using UnityEngine; using UnityEditor; using System.Collections.Generic; @@ -1788,96 +1792,238 @@ namespace Spine.Unity.Editor { internal static class SpineTK2DEditorUtility { const string SPINE_TK2D_DEFINE = "SPINE_TK2D"; - static bool IsInvalidGroup (BuildTargetGroup group) { - int gi = (int)group; - return - gi == 15 || gi == 16 - || - group == BuildTargetGroup.Unknown; - } - internal static void EnableTK2D () { - bool added = false; - - DisableSpineAsmdefFiles(); - - foreach (BuildTargetGroup group in System.Enum.GetValues(typeof(BuildTargetGroup))) { - if (IsInvalidGroup(group)) - continue; - - string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group); - if (!defines.Contains(SPINE_TK2D_DEFINE)) { - added = true; - if (defines.EndsWith(";", System.StringComparison.Ordinal)) - defines = defines + SPINE_TK2D_DEFINE; - else - defines = defines + ";" + SPINE_TK2D_DEFINE; - - PlayerSettings.SetScriptingDefineSymbolsForGroup(group, defines); - } - } - - if (added) { - Debug.LogWarning("Setting Scripting Define Symbol " + SPINE_TK2D_DEFINE); - } else { - Debug.LogWarning("Already Set Scripting Define Symbol " + SPINE_TK2D_DEFINE); - } + SpineBuildEnvUtility.DisableSpineAsmdefFiles(); + SpineBuildEnvUtility.EnableBuildDefine(SPINE_TK2D_DEFINE); } - internal static void DisableTK2D () { - bool removed = false; + SpineBuildEnvUtility.EnableSpineAsmdefFiles(); + SpineBuildEnvUtility.DisableBuildDefine(SPINE_TK2D_DEFINE); + } + } - EnableSpineAsmdefFiles(); + public static class SpinePackageDependencyUtility + { + public enum RequestState { + NoRequestIssued = 0, + InProgress, + Success, + Failure + } - foreach (BuildTargetGroup group in System.Enum.GetValues(typeof(BuildTargetGroup))) { - if (IsInvalidGroup(group)) - continue; + #if NEW_TIMELINE_AS_PACKAGE + const string SPINE_TIMELINE_PACKAGE_DOWNLOADED_DEFINE = "SPINE_TIMELINE_PACKAGE_DOWNLOADED"; + const string TIMELINE_PACKAGE_NAME = "com.unity.timeline"; + const string TIMELINE_ASMDEF_DEPENDENCY_STRING = "\"Unity.Timeline\""; + static UnityEditor.PackageManager.Requests.AddRequest timelineRequest = null; + + /// + /// Enables Spine's Timeline components by downloading the Timeline Package in Unity 2019 and newer + /// and setting respective compile definitions once downloaded. + /// + internal static void EnableTimelineSupport () { + Debug.Log("Downloading Timeline package " + TIMELINE_PACKAGE_NAME + "."); + timelineRequest = UnityEditor.PackageManager.Client.Add(TIMELINE_PACKAGE_NAME); + // Note: unfortunately there is no callback provided, only polling support. + // So polling HandlePendingAsyncTimelineRequest() is necessary. - string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group); - if (defines.Contains(SPINE_TK2D_DEFINE)) { - removed = true; - if (defines.Contains(SPINE_TK2D_DEFINE + ";")) - defines = defines.Replace(SPINE_TK2D_DEFINE + ";", ""); - else - defines = defines.Replace(SPINE_TK2D_DEFINE, ""); + EditorApplication.update -= UpdateAsyncTimelineRequest; + EditorApplication.update += UpdateAsyncTimelineRequest; + } - PlayerSettings.SetScriptingDefineSymbolsForGroup(group, defines); + public static void UpdateAsyncTimelineRequest () { + HandlePendingAsyncTimelineRequest(); + } + + public static RequestState HandlePendingAsyncTimelineRequest () { + if (timelineRequest == null) + return RequestState.NoRequestIssued; + + var status = timelineRequest.Status; + if (status == UnityEditor.PackageManager.StatusCode.InProgress) { + return RequestState.InProgress; + } + else { + EditorApplication.update -= UpdateAsyncTimelineRequest; + timelineRequest = null; + if (status == UnityEditor.PackageManager.StatusCode.Failure) { + Debug.LogError("Download of package " + TIMELINE_PACKAGE_NAME + " failed!"); + return RequestState.Failure; + } + else { // status == UnityEditor.PackageManager.StatusCode.Success + HandleSuccessfulTimelinePackageDownload(); + return RequestState.Success; } } + } - if (removed) { - Debug.LogWarning("Removing Scripting Define Symbol " + SPINE_TK2D_DEFINE); - } else { - Debug.LogWarning("Already Removed Scripting Define Symbol " + SPINE_TK2D_DEFINE); + internal static void DisableTimelineSupport () { + SpineBuildEnvUtility.DisableBuildDefine(SPINE_TIMELINE_PACKAGE_DOWNLOADED_DEFINE); + SpineBuildEnvUtility.RemoveDependencyFromAsmdefFile(TIMELINE_ASMDEF_DEPENDENCY_STRING); + } + + internal static void HandleSuccessfulTimelinePackageDownload () { + + SpineBuildEnvUtility.AddDependencyToAsmdefFile(TIMELINE_ASMDEF_DEPENDENCY_STRING); + SpineBuildEnvUtility.EnableBuildDefine(SPINE_TIMELINE_PACKAGE_DOWNLOADED_DEFINE); + } + #endif + } + } + + public static class SpineBuildEnvUtility + { + static bool IsInvalidGroup (BuildTargetGroup group) { + int gi = (int)group; + return + gi == 15 || gi == 16 + || + group == BuildTargetGroup.Unknown; + } + + public static bool EnableBuildDefine (string define) { + + bool wasDefineAdded = false; + Debug.LogWarning("Please ignore errors \"PlayerSettings Validation: Requested build target group doesn't exist\" below"); + foreach (BuildTargetGroup group in System.Enum.GetValues(typeof(BuildTargetGroup))) { + if (IsInvalidGroup(group)) + continue; + + string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group); + if (!defines.Contains(define)) { + wasDefineAdded = true; + if (defines.EndsWith(";", System.StringComparison.Ordinal)) + defines += define; + else + defines += ";" + define; + + PlayerSettings.SetScriptingDefineSymbolsForGroup(group, defines); + } + } + Debug.LogWarning("Please ignore errors \"PlayerSettings Validation: Requested build target group doesn't exist\" above"); + + if (wasDefineAdded) { + Debug.LogWarning("Setting Scripting Define Symbol " + define); + } + else { + Debug.LogWarning("Already Set Scripting Define Symbol " + define); + } + return wasDefineAdded; + } + + public static bool DisableBuildDefine (string define) { + + bool wasDefineRemoved = false; + foreach (BuildTargetGroup group in System.Enum.GetValues(typeof(BuildTargetGroup))) { + if (IsInvalidGroup(group)) + continue; + + string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group); + if (defines.Contains(define)) { + wasDefineRemoved = true; + if (defines.Contains(define + ";")) + defines = defines.Replace(define + ";", ""); + else + defines = defines.Replace(define, ""); + + PlayerSettings.SetScriptingDefineSymbolsForGroup(group, defines); } } - internal static void DisableSpineAsmdefFiles() { - SetAsmdefFileActive("spine-unity-editor", false); - SetAsmdefFileActive("spine-unity", false); + if (wasDefineRemoved) { + Debug.LogWarning("Removing Scripting Define Symbol " + define); } - - internal static void EnableSpineAsmdefFiles() { - SetAsmdefFileActive("spine-unity-editor", true); - SetAsmdefFileActive("spine-unity", true); + else { + Debug.LogWarning("Already Removed Scripting Define Symbol " + define); } + return wasDefineRemoved; + } - internal static void SetAsmdefFileActive(string filename, bool setActive) { + public static void DisableSpineAsmdefFiles () { + SetAsmdefFileActive("spine-unity-editor", false); + SetAsmdefFileActive("spine-unity", false); + } - string typeSearchString = setActive ? " t:TextAsset" : " t:AssemblyDefinitionAsset"; - string[] guids = AssetDatabase.FindAssets(filename + typeSearchString); - foreach (string guid in guids) { - string currentPath = AssetDatabase.GUIDToAssetPath(guid); - string targetPath = System.IO.Path.ChangeExtension(currentPath, setActive ? "asmdef" : "txt"); - if (System.IO.File.Exists(currentPath) && !System.IO.File.Exists(targetPath)) { - System.IO.File.Copy(currentPath, targetPath); - System.IO.File.Copy(currentPath + ".meta", targetPath + ".meta"); - } - AssetDatabase.DeleteAsset(currentPath); + public static void EnableSpineAsmdefFiles () { + SetAsmdefFileActive("spine-unity-editor", true); + SetAsmdefFileActive("spine-unity", true); + } + + public static void AddDependencyToAsmdefFile (string dependencyName) { + string asmdefName = "spine-unity"; + string filePath = FindAsmdefFile(asmdefName); + if (string.IsNullOrEmpty(filePath)) + return; + + if (System.IO.File.Exists(filePath)) { + string fileContent = File.ReadAllText(filePath); + // this simple implementation shall suffice for now. + if (!fileContent.Contains(dependencyName)) { + fileContent = fileContent.Replace(@"""references"": [", + @"""references"": [" + dependencyName); + File.WriteAllText(filePath, fileContent); } } } + + public static void RemoveDependencyFromAsmdefFile (string dependencyName) { + string asmdefName = "spine-unity"; + string filePath = FindAsmdefFile(asmdefName); + if (string.IsNullOrEmpty(filePath)) + return; + + if (System.IO.File.Exists(filePath)) { + string fileContent = File.ReadAllText(filePath); + // this simple implementation shall suffice for now. + if (fileContent.Contains(dependencyName)) { + fileContent = fileContent.Replace(dependencyName, ""); + File.WriteAllText(filePath, fileContent); + } + } + } + + internal static string FindAsmdefFile (string filename) { + string filePath = FindAsmdefFile(filename, isDisabledFile: false); + if (string.IsNullOrEmpty(filePath)) + filePath = FindAsmdefFile(filename, isDisabledFile: true); + return filePath; + } + + internal static string FindAsmdefFile (string filename, bool isDisabledFile) { + + string typeSearchString = isDisabledFile ? " t:TextAsset" : " t:AssemblyDefinitionAsset"; + string extension = isDisabledFile ? ".txt" : ".asmdef"; + string filenameWithExtension = filename + (isDisabledFile ? ".txt" : ".asmdef"); + string[] guids = AssetDatabase.FindAssets(filename + typeSearchString); + foreach (string guid in guids) { + string currentPath = AssetDatabase.GUIDToAssetPath(guid); + if (!string.IsNullOrEmpty(currentPath)) { + if (System.IO.Path.GetFileName(currentPath) == filenameWithExtension) + return currentPath; + } + } + return null; + } + + internal static void SetAsmdefFileActive (string filename, bool setActive) { + + string typeSearchString = setActive ? " t:TextAsset" : " t:AssemblyDefinitionAsset"; + string extensionBeforeChange = setActive ? "txt" : "asmdef"; + string[] guids = AssetDatabase.FindAssets(filename + typeSearchString); + foreach (string guid in guids) { + string currentPath = AssetDatabase.GUIDToAssetPath(guid); + if (!System.IO.Path.HasExtension(extensionBeforeChange)) // asmdef is also found as t:TextAsset, so check + continue; + + string targetPath = System.IO.Path.ChangeExtension(currentPath, setActive ? "asmdef" : "txt"); + if (System.IO.File.Exists(currentPath) && !System.IO.File.Exists(targetPath)) { + System.IO.File.Copy(currentPath, targetPath); + System.IO.File.Copy(currentPath + ".meta", targetPath + ".meta"); + } + AssetDatabase.DeleteAsset(currentPath); + } + } } public class TextureModificationWarningProcessor : UnityEditor.AssetModificationProcessor diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Modules/Timeline/Editor/SpineSkeletonFlipDrawer.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Modules/Timeline/Editor/SpineSkeletonFlipDrawer.cs index 5faa97b1c..398a8b213 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Modules/Timeline/Editor/SpineSkeletonFlipDrawer.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Modules/Timeline/Editor/SpineSkeletonFlipDrawer.cs @@ -27,7 +27,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using UnityEditor; using UnityEngine; using UnityEngine.Playables; @@ -53,4 +53,4 @@ public class SpineSkeletonFlipDrawer : PropertyDrawer EditorGUI.PropertyField(singleFieldRect, flipYProp); } } -#endif +#endif \ No newline at end of file diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/PlayableHandle Component/SkeletonAnimationPlayableHandle.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/PlayableHandle Component/SkeletonAnimationPlayableHandle.cs index d43d4f24d..a16737d34 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/PlayableHandle Component/SkeletonAnimationPlayableHandle.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/PlayableHandle Component/SkeletonAnimationPlayableHandle.cs @@ -58,7 +58,7 @@ namespace Spine.Unity.Playables { public override Skeleton Skeleton { get { return skeletonAnimation.Skeleton; } } public override SkeletonData SkeletonData { get { return skeletonAnimation.Skeleton.data; } } - #if UNITY_2017 || UNITY_2018 + #if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) void Awake () { if (skeletonAnimation == null) skeletonAnimation = GetComponent(); diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateBehaviour.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateBehaviour.cs index ef5fd73ca..8bafb2118 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateBehaviour.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateBehaviour.cs @@ -27,7 +27,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using System; using UnityEngine; using UnityEngine.Playables; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateClip.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateClip.cs index 8b68f559f..f3b6c175d 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateClip.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateClip.cs @@ -27,7 +27,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using System; using UnityEngine; using UnityEngine.Playables; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs index 35980fb38..5b12f920a 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs @@ -29,7 +29,7 @@ #define SPINE_EDITMODEPOSE -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using System; using UnityEngine; using UnityEngine.Playables; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateTrack.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateTrack.cs index 13058b8d3..a3d282227 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateTrack.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateTrack.cs @@ -27,7 +27,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using UnityEngine; using UnityEngine.Playables; using UnityEngine.Timeline; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipBehaviour.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipBehaviour.cs index 749c936ec..a4eaae0ea 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipBehaviour.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipBehaviour.cs @@ -27,7 +27,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using System; using UnityEngine; using UnityEngine.Playables; @@ -37,4 +37,4 @@ using UnityEngine.Timeline; public class SpineSkeletonFlipBehaviour : PlayableBehaviour { public bool flipX, flipY; } -#endif +#endif \ No newline at end of file diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipClip.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipClip.cs index 95bf4f808..a570758e9 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipClip.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipClip.cs @@ -27,7 +27,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using System; using UnityEngine; using UnityEngine.Playables; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipMixerBehaviour.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipMixerBehaviour.cs index 3573b5761..33e42f3b4 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipMixerBehaviour.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipMixerBehaviour.cs @@ -27,7 +27,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using System; using UnityEngine; using UnityEngine.Playables; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipTrack.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipTrack.cs index 7c8361494..efa2a5fd1 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipTrack.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/Timeline/SpineSkeletonFlip/SpineSkeletonFlipTrack.cs @@ -27,7 +27,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#if UNITY_2017 || UNITY_2018 +#if UNITY_2017 || UNITY_2018 || (UNITY_2019_1_OR_NEWER && SPINE_TIMELINE_PACKAGE_DOWNLOADED) using UnityEngine; using UnityEngine.Playables; using UnityEngine.Timeline; From 66f5ca29acc8b8070970a36cc6f8b8701ba2b8e0 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 30 Apr 2019 18:36:47 +0200 Subject: [PATCH 2/7] [unity] Renamed .asmdef files to .txt files to prevent overwriting important automatic modifications when unpacking newer unitypackages over it. For Timeline support in Unity 2019, see #1326. --- .../Editor/{spine-unity-editor.asmdef => spine-unity-editor.txt} | 0 ...spine-unity-editor.asmdef.meta => spine-unity-editor.txt.meta} | 0 .../Assets/Spine/Runtime/{spine-unity.asmdef => spine-unity.txt} | 0 .../Runtime/{spine-unity.asmdef.meta => spine-unity.txt.meta} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename spine-unity/Assets/Spine/Editor/{spine-unity-editor.asmdef => spine-unity-editor.txt} (100%) rename spine-unity/Assets/Spine/Editor/{spine-unity-editor.asmdef.meta => spine-unity-editor.txt.meta} (100%) rename spine-unity/Assets/Spine/Runtime/{spine-unity.asmdef => spine-unity.txt} (100%) rename spine-unity/Assets/Spine/Runtime/{spine-unity.asmdef.meta => spine-unity.txt.meta} (100%) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity-editor.asmdef b/spine-unity/Assets/Spine/Editor/spine-unity-editor.txt similarity index 100% rename from spine-unity/Assets/Spine/Editor/spine-unity-editor.asmdef rename to spine-unity/Assets/Spine/Editor/spine-unity-editor.txt diff --git a/spine-unity/Assets/Spine/Editor/spine-unity-editor.asmdef.meta b/spine-unity/Assets/Spine/Editor/spine-unity-editor.txt.meta similarity index 100% rename from spine-unity/Assets/Spine/Editor/spine-unity-editor.asmdef.meta rename to spine-unity/Assets/Spine/Editor/spine-unity-editor.txt.meta diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity.asmdef b/spine-unity/Assets/Spine/Runtime/spine-unity.txt similarity index 100% rename from spine-unity/Assets/Spine/Runtime/spine-unity.asmdef rename to spine-unity/Assets/Spine/Runtime/spine-unity.txt diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity.asmdef.meta b/spine-unity/Assets/Spine/Runtime/spine-unity.txt.meta similarity index 100% rename from spine-unity/Assets/Spine/Runtime/spine-unity.asmdef.meta rename to spine-unity/Assets/Spine/Runtime/spine-unity.txt.meta From b198c9b48d5d67419a6d26c50f0b9081e5e70029 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 30 Apr 2019 19:58:00 +0200 Subject: [PATCH 3/7] [unity] More robustness changes for asmdef files and Timeline support in Unity 2019, see #1326. --- .../spine-unity/Editor/SpineEditorUtilities.cs | 12 +++++++++++- spine-unity/Assets/Spine/Runtime/spine-unity.txt | 3 ++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs index c333f811c..ed5f91aae 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs @@ -1865,6 +1865,9 @@ namespace Spine.Unity.Editor { internal static void HandleSuccessfulTimelinePackageDownload () { + #if !SPINE_TK2D + SpineBuildEnvUtility.EnableSpineAsmdefFiles(); + #endif SpineBuildEnvUtility.AddDependencyToAsmdefFile(TIMELINE_ASMDEF_DEPENDENCY_STRING); SpineBuildEnvUtility.EnableBuildDefine(SPINE_TIMELINE_PACKAGE_DOWNLOADED_DEFINE); } @@ -1958,7 +1961,14 @@ namespace Spine.Unity.Editor { if (System.IO.File.Exists(filePath)) { string fileContent = File.ReadAllText(filePath); - // this simple implementation shall suffice for now. + + if (!fileContent.Contains("references")) { + string nameLine = string.Concat("\"name\": \"", asmdefName, "\""); + fileContent = fileContent.Replace(nameLine, + nameLine + + @",\n""references"": []"); + } + if (!fileContent.Contains(dependencyName)) { fileContent = fileContent.Replace(@"""references"": [", @"""references"": [" + dependencyName); diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity.txt b/spine-unity/Assets/Spine/Runtime/spine-unity.txt index b364e160d..cabce6f94 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity.txt +++ b/spine-unity/Assets/Spine/Runtime/spine-unity.txt @@ -1,3 +1,4 @@ { - "name": "spine-unity" + "name": "spine-unity", + "references": [] } From da97eeb62f963b89b36d1e15eb615b0dcb287681 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 2 May 2019 12:00:17 +0200 Subject: [PATCH 4/7] [unity] Menu section added for old git 3.7 branch menu, for easier consistent git merges later. Timeline support in Unity 2019, see #1326. --- .../spine-unity/Editor/SpineEditorUtilities.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs index ed5f91aae..1165e836e 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs @@ -430,7 +430,21 @@ namespace Spine.Unity.Editor { } } + #if NEW_TIMELINE_AS_PACKAGE + GUILayout.Space(20); + EditorGUILayout.LabelField("Timeline Support", EditorStyles.boldLabel); + using (new GUILayout.HorizontalScope()) { + EditorGUILayout.PrefixLabel("Timeline Package Support"); + var requestState = SpineEditorUtilities.SpinePackageDependencyUtility.HandlePendingAsyncTimelineRequest(); + using (new EditorGUI.DisabledGroupScope(requestState != SpineEditorUtilities.SpinePackageDependencyUtility.RequestState.NoRequestIssued)) { + if (GUILayout.Button("Enable", GUILayout.Width(64))) + SpineEditorUtilities.SpinePackageDependencyUtility.EnableTimelineSupport(); + if (GUILayout.Button("Disable", GUILayout.Width(64))) + SpineEditorUtilities.SpinePackageDependencyUtility.DisableTimelineSupport(); + } + } + #endif GUILayout.Space(20); EditorGUILayout.LabelField("3rd Party Settings", EditorStyles.boldLabel); From fd66bce31ea0963efcd19c585ecd30ed23ba9bcf Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 2 May 2019 13:40:57 +0200 Subject: [PATCH 5/7] [unity] Updated Changelog with sections for Timeline support in Unity 2019 and changes to .asmdef files, see #1326. --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11b2a97b8..68c372561 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,8 +114,11 @@ * `TrackEntry` has an additional field called `holdPrevious`. It can be used to counter act a limitation of `AnimationState` resulting in "dipping" of parts of the animation. For a full discussion of the problem and the solution we've implemented, see this [forum thread](http://esotericsoftware.com/forum/Probably-Easy-Animation-mixing-with-multiple-tracks-10682?p=48130&hilit=holdprevious#p48130). ### Unity -* **Runtime and Editor, and Assembly Definition** Files and folders have been reorganized into "Runtime" and "Editor". Each of these have an `.asmdef` file that defines these separately as their own assembly in Unity. For projects not using assembly definition, you may delete the `.asmdef` files. These assembly definitions will be ignored by older versions of Unity that don't support it. +* **Runtime and Editor, and Assembly Definition** Files and folders have been reorganized into "Runtime" and "Editor". Each of these have an `.asmdef` file that defines these separately as their own assembly in Unity *(Note: Spine `.asmdef` files are currently deactivated to `.txt` extension, see below)*. For projects not using assembly definition, you may delete the `.asmdef` files. These assembly definitions will be ignored by older versions of Unity that don't support it. * In this scheme, the entirety of the base spine-csharp runtime is inside the "Runtime" folder, to be compiled in the same assembly as spine-unity so they can continue to share internal members. +* **Spine `.asmdef` files are now deactivated (using `.txt` extension) by default** This prevents problems when updating Spine through unitypackages, overwriting the Timeline reference entry in `spine-unity.asmdef` (added automatically when enabling Unity 2019 Timeline support, see `Timeline Support for Unity 2019`), causing compile errors. In case you want to enable the `.asmdef` files, rename the files: + `Spine/Runtime/spine-unity.txt` to `Spine/Runtime/spine-unity.asmdef` and + `Spine/Editor/spine-unity-editor.txt` to `Spine/Editor/spine-unity-editor.asmdef`. * **SkeletonAnimator is now SkeletonMecanim** The Spine-Unity Mecanim-driven component `SkeletonAnimator` has been renamed `SkeletonMecanim` to make it more autocomplete-friendly and more obvious at human-glance. The .meta files and guids should remain intact so existing projects and prefabs should not break. However, user code needs to be updated to use `SkeletonMecanim`. * **SpineAtlasAsset** The existing `AtlasAsset` type has been renamed to `SpineAtlasAsset` to signify that it specifically uses a Spine/libGDX atlas as its source. Serialization should be intact but user code will need to be updated to refer to existing atlases as `SpineAtlasAsset`. * **AtlasAssetBase** `SpineAtlasAsset` now has an abstract base class called `SpineAtlasAsset`. This is the base class to derive when using alternate atlas sources. Existing SkeletonDataAsset field "atlasAssets" now have the "AtlasAssetBase" type. Serialization should be intact, but user code will need to be updated to refer to the atlas assets accordingly. @@ -155,6 +158,11 @@ * `CompareFunction.LessEqual` for `Mask Interaction - Visible Inside Mask` * `CompareFunction.Greater` for `Mask Interaction - Visible Outside Mask` * **RectMask2D Support for SkeletonGraphic** Both `SkeletonGraphic` shaders '`Spine/SkeletonGraphic`' and '`Spine/SkeletonGraphic Tint Black`' now respect masking areas defined via Unity's `RectMask2D` component. +* **Timeline Support for Unity 2019** using the existing Timeline components. By default, all Spine Timeline components are deactivated in Unity 2019 and **can be activated via the Spine Preferences menu**. This step became necessary because in Unity 2019, Timeline has been moved to a separate Package and is no longer included in the Unity core. Please visit `Edit - Preferences - Spine` and at `Timeline Package Support` hit `Enable` to automatically perform all necessary steps to activate the Timeline components. +This will automatically: + 1. download the Unity Timeline package + 2. activate the Spine Timeline components by setting the compile definition `SPINE_TIMELINE_PACKAGE_DOWNLOADED` for all platforms + 3. modify the `spine-unity.asmdef` file by adding the reference to the Unity Timeline library. ### XNA/MonoGame * Added support for any `Effect` to be used by `SkeletonRenderer` From 25386671b17269ec3225c7807b55a09e35749c9e Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 2 May 2019 18:50:58 +0200 Subject: [PATCH 6/7] [unity] Fixed Timeline scripts not automatically being recompiled when Timeline Package Support - Enable was selected. Closes #1326. --- .../Editor/SpineEditorUtilities.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs index 1165e836e..f17fd139d 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs @@ -1884,6 +1884,34 @@ namespace Spine.Unity.Editor { #endif SpineBuildEnvUtility.AddDependencyToAsmdefFile(TIMELINE_ASMDEF_DEPENDENCY_STRING); SpineBuildEnvUtility.EnableBuildDefine(SPINE_TIMELINE_PACKAGE_DOWNLOADED_DEFINE); + + ReimportTimelineScripts(); + } + + internal static void ReimportTimelineScripts () { + // Note: unfortunately AssetDatabase::Refresh is not enough and + // ImportAsset on a dir does not have the desired effect. + List searchStrings = new List(); + searchStrings.Add("SpineAnimationStateBehaviour t:script"); + searchStrings.Add("SpineAnimationStateClip t:script"); + searchStrings.Add("SpineAnimationStateMixerBehaviour t:script"); + searchStrings.Add("SpineAnimationStateTrack t:script"); + + searchStrings.Add("SpineSkeletonFlipBehaviour t:script"); + searchStrings.Add("SpineSkeletonFlipClip t:script"); + searchStrings.Add("SpineSkeletonFlipMixerBehaviour t:script"); + searchStrings.Add("SpineSkeletonFlipTrack t:script"); + + searchStrings.Add("SkeletonAnimationPlayableHandle t:script"); + searchStrings.Add("SpinePlayableHandleBase t:script"); + + foreach (string searchString in searchStrings) { + string[] guids = AssetDatabase.FindAssets(searchString); + foreach (string guid in guids) { + string currentPath = AssetDatabase.GUIDToAssetPath(guid); + AssetDatabase.ImportAsset(currentPath, ImportAssetOptions.ForceUpdate); + } + } } #endif } From 849e9acc7eb4d0de7fb230a8eefc2475cddf7142 Mon Sep 17 00:00:00 2001 From: badlogic Date: Fri, 3 May 2019 10:51:33 +0200 Subject: [PATCH 7/7] Updated READMEs. --- README.md | 12 ++++++++---- spine-as3/README.md | 8 ++++++-- spine-c/README.md | 8 ++++++-- spine-cocos2d-objc/README.md | 8 ++++++-- spine-cocos2dx/README.md | 8 ++++++-- spine-corona/README.md | 8 ++++++-- spine-cpp/README.md | 8 ++++++-- spine-csharp/README.md | 8 ++++++-- spine-libgdx/README.md | 8 ++++++-- spine-love/README.md | 7 +++++-- spine-lua/README.md | 8 ++++++-- spine-monogame/README.md | 8 ++++++-- spine-sfml/c/README.md | 8 ++++++-- spine-sfml/cpp/README.md | 7 +++++-- spine-starling/README.md | 8 ++++++-- spine-ts/README.md | 8 ++++++-- spine-ue4/README.md | 8 ++++++-- spine-unity/README.md | 8 ++++++-- spine-xna/README.md | 10 +++++++--- 19 files changed, 115 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 062377f2e..32451850e 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,13 @@ This GitHub project hosts the Spine Runtimes which are needed to use [Spine](htt ## Licensing -The Spine Runtimes may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate the Spine Runtimes into your applications, distribute software containing the Spine Runtimes, or modify the Spine Runtimes, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By licensing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. A Spine license is needed to distribute any software containing the Spine Runtimes, even if you are not using the Spine editor. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Documentation @@ -14,7 +18,7 @@ See the [Spine Runtimes Guide](http://esotericsoftware.com/spine-runtimes-guide) ## Bugs, enhancements, and tasks -Review our backlog of bugs, enhancements, and tasks in the [spine-runtimes](https://github.com/EsotericSoftware/spine-runtimes/issues) and [spine-editor](https://github.com/EsotericSoftware/spine-editor/issues) issue trackers.The [spine-runtimes waffle](https://waffle.io/EsotericSoftware/spine-runtimes) and [spine-editor waffle](https://waffle.io/EsotericSoftware/spine-editor) provide a more convenient view of the same issue tracker information. +Review our backlog of bugs, enhancements, and tasks in the [spine-runtimes](https://github.com/EsotericSoftware/spine-runtimes/issues) and [spine-editor](https://github.com/EsotericSoftware/spine-editor/issues) issue trackers. Our [roadmap](http://esotericsoftware.com/spine-roadmap) provides a more convenient view of the same issue tracker information. ## Versioning @@ -24,6 +28,6 @@ It is highly suggested to [freeze](http://esotericsoftware.com/spine-settings#Ve ## Contributing -In order to merge your contributions, we need a signed [contributor license agreement (CLA)](http://esotericsoftware.com/files/cla.txt) from you. You can send a copy of the CLA to contact@esotericsoftware.com. +In order to merge your contributions, we need a signed [contributor license agreement (CLA)](http://esotericsoftware.com/licenses/cla.txt) from you. You can send a copy of the CLA to contact@esotericsoftware.com. When possible, it is best to base your contributions on the current beta branch (`X.X-beta`). Please be sure to follow the style and formatting you find in the respective runtime code to which you are contributing. diff --git a/spine-as3/README.md b/spine-as3/README.md index f38ae8759..fa5889bef 100644 --- a/spine-as3/README.md +++ b/spine-as3/README.md @@ -4,9 +4,13 @@ The spine-as3 runtime provides functionality to load and manipulate [Spine](http ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-c/README.md b/spine-c/README.md index 041add2bc..d3df35895 100644 --- a/spine-c/README.md +++ b/spine-c/README.md @@ -4,9 +4,13 @@ The spine-c runtime provides basic functionality to load and manipulate [Spine]( ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-cocos2d-objc/README.md b/spine-cocos2d-objc/README.md index 154dbb9ad..80e4a716e 100644 --- a/spine-cocos2d-objc/README.md +++ b/spine-cocos2d-objc/README.md @@ -4,9 +4,13 @@ The spine-cocos2d-objc runtime provides functionality to load, manipulate and re ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-cocos2dx/README.md b/spine-cocos2dx/README.md index 2cca28447..6f8293a56 100644 --- a/spine-cocos2dx/README.md +++ b/spine-cocos2dx/README.md @@ -4,9 +4,13 @@ The spine-cocos2dx runtime provides functionality to load, manipulate and render ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-corona/README.md b/spine-corona/README.md index eb820d75b..b26f8a30e 100644 --- a/spine-corona/README.md +++ b/spine-corona/README.md @@ -4,9 +4,13 @@ The spine-corona runtime provides functionality to load, manipulate and render [ ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-cpp/README.md b/spine-cpp/README.md index abd5ce3b1..93e8e8a50 100644 --- a/spine-cpp/README.md +++ b/spine-cpp/README.md @@ -4,9 +4,13 @@ The spine-cpp runtime provides basic functionality to load and manipulate [spine ## Licensing -This spine Runtime may only be used for personal or internal use, typically to evaluate spine before purchasing. If you would like to incorporate a spine Runtime into your applications, distribute software containing a spine Runtime, or modify a spine Runtime, then you will need a valid [spine license](https://esotericsoftware.com/spine-purchase). Please see the [spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The spine Runtimes are developed with the intent to be used with data exported from spine. By purchasing spine, `Section 2` of the [spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-csharp/README.md b/spine-csharp/README.md index e1f365e34..2b085e429 100644 --- a/spine-csharp/README.md +++ b/spine-csharp/README.md @@ -4,9 +4,13 @@ The spine-csharp runtime provides functionality to load and manipulate [Spine](h ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-libgdx/README.md b/spine-libgdx/README.md index d303551fb..eb98c9684 100644 --- a/spine-libgdx/README.md +++ b/spine-libgdx/README.md @@ -4,9 +4,13 @@ The spine-libgdx runtime provides functionality to load, manipulate and render [ ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-love/README.md b/spine-love/README.md index 6bb5525f9..32dcaa71f 100644 --- a/spine-love/README.md +++ b/spine-love/README.md @@ -3,10 +3,13 @@ The spine-love runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [LÖVE](https://love2d.org/). spine-love is based on [spine-lua](../spine-lua). ## Licensing +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-lua/README.md b/spine-lua/README.md index 3c40b6ea5..d9c12158c 100644 --- a/spine-lua/README.md +++ b/spine-lua/README.md @@ -4,9 +4,13 @@ The spine-lua runtime provides functionality to load and manipulate [Spine](http ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-monogame/README.md b/spine-monogame/README.md index fb4a1c48e..e6df3bda0 100644 --- a/spine-monogame/README.md +++ b/spine-monogame/README.md @@ -4,9 +4,13 @@ The spine-monogame runtime provides functionality to load, manipulate and render ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-sfml/c/README.md b/spine-sfml/c/README.md index fabc66903..1eb1a021c 100644 --- a/spine-sfml/c/README.md +++ b/spine-sfml/c/README.md @@ -4,9 +4,13 @@ The spine-sfml runtime provides functionality to load, manipulate and render [Sp ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-sfml/cpp/README.md b/spine-sfml/cpp/README.md index bcdf4f96d..e8b9f5de6 100644 --- a/spine-sfml/cpp/README.md +++ b/spine-sfml/cpp/README.md @@ -3,10 +3,13 @@ The spine-sfml runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [SFML](http://www.sfml-dev.org/). spine-sfml is based on [spine-cpp](../../spine-cpp). ## Licensing +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-starling/README.md b/spine-starling/README.md index b43c67979..a4691b7a3 100644 --- a/spine-starling/README.md +++ b/spine-starling/README.md @@ -4,9 +4,13 @@ The spine-starling runtime provides functionality to load, manipulate and render ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information.h +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-ts/README.md b/spine-ts/README.md index 950533f9d..18dd8f4e9 100644 --- a/spine-ts/README.md +++ b/spine-ts/README.md @@ -12,9 +12,13 @@ up into multiple modules: While the source code for the core library and backends is written in TypeScript, all code is compiled to easily consumable JavaScript. ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-ue4/README.md b/spine-ue4/README.md index b37c15f35..38c1eab53 100644 --- a/spine-ue4/README.md +++ b/spine-ue4/README.md @@ -3,9 +3,13 @@ The spine-ue4 runtime provides functionality to load, manipulate and render [Spi ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-unity/README.md b/spine-unity/README.md index 88d60be1f..b23a755b2 100644 --- a/spine-unity/README.md +++ b/spine-unity/README.md @@ -8,9 +8,13 @@ While spine-unity can render directly with Unity, without the need for any other ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version diff --git a/spine-xna/README.md b/spine-xna/README.md index 7dbb887f9..e91f90e37 100644 --- a/spine-xna/README.md +++ b/spine-xna/README.md @@ -4,9 +4,13 @@ The spine-xna runtime provides functionality to load, manipulate and render [Spi ## Licensing -This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](http://esotericsoftware.com/git/spine-runtimes/blob/LICENSE) for detailed information. +You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. -The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. +You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library. + +In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license. + +For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2). ## Spine version @@ -17,7 +21,7 @@ spine-xna supports all Spine features. ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it as a zip via the download button above. -1. For XNA with Visual Studio 2015, download [XNA 4.0 refresh for Visual Studio 2015](https://mxa.codeplex.com/releases/view/618279). Install each subfolder as per the README file. +1. For XNA with Visual Studio 2015, download [XNA 4.0 refresh for Visual Studio 2015](https://mxa.codeplex.com/releases/view/618279). Install each subfolder as per the README file. 1. Open the `spine-xna.sln` project file with Visual Studio. 1. Set `spine-xna-example` as the startup project 1. Set the working directory of `spine-xna-example` to `spine-runtimes/spine-xna/example`