Browse Source

Merge branch '4.0' into 4.1-beta

Harald Csaszar 3 năm trước cách đây
mục cha
commit
f2cf39cfb6
16 tập tin đã thay đổi với 55 bổ sung44 xóa
  1. 4 4
      spine-cpp/spine-cpp/src/spine/SkeletonBounds.cpp
  2. 2 2
      spine-unity/Assets/Spine Examples/Scripts/Sample Components/BoneLocalOverride.cs
  3. 5 5
      spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonUtility Modules/SkeletonRagdoll2D.cs
  4. 6 4
      spine-unity/Assets/Spine Examples/Scripts/Sample Components/SpineEventUnityHandler.cs
  5. 14 6
      spine-unity/Assets/Spine/Runtime/spine-unity/ISkeletonAnimation.cs
  6. 0 3
      spine-unity/Assets/Spine/Runtime/spine-unity/Shaders/Sprite/SpritesPixelLit.shader
  7. 0 2
      spine-unity/Assets/Spine/Runtime/spine-unity/Shaders/Sprite/SpritesUnlit.shader
  8. 0 2
      spine-unity/Assets/Spine/Runtime/spine-unity/Shaders/Sprite/SpritesVertexLit.shader
  9. 5 5
      spine-unity/Modules/com.esotericsoftware.spine.timeline/Runtime/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs
  10. 11 0
      spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-SkeletonLit-URP-2D.shader
  11. 0 2
      spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-Sprite-URP-2D.shader
  12. 2 1
      spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/SpineCoreShaders/ShaderShared.cginc
  13. 1 0
      spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/SpineCoreShaders/Spine-Common.cginc
  14. 1 0
      spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/SpineCoreShaders/Spine-Outline-Common.cginc
  15. 2 1
      spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/SpineCoreShaders/SpriteLighting.cginc
  16. 2 7
      spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Spine-Sprite-URP.shader

+ 4 - 4
spine-cpp/spine-cpp/src/spine/SkeletonBounds.cpp

@@ -198,10 +198,10 @@ float SkeletonBounds::getHeight() {
 }
 
 void SkeletonBounds::aabbCompute() {
-	float minX = FLT_MIN;
-	float minY = FLT_MIN;
-	float maxX = FLT_MAX;
-	float maxY = FLT_MAX;
+	float minX = FLT_MAX;
+	float minY = FLT_MAX;
+	float maxX = FLT_MIN;
+	float maxY = FLT_MIN;
 
 	for (size_t i = 0, n = _polygons.size(); i < n; ++i) {
 		spine::Polygon *polygon = _polygons[i];

+ 2 - 2
spine-unity/Assets/Spine Examples/Scripts/Sample Components/BoneLocalOverride.cs

@@ -53,8 +53,8 @@ namespace Spine.Unity.Examples {
 #if UNITY_EDITOR
 		void OnValidate () {
 			if (Application.isPlaying) return;
-			spineComponent = spineComponent ?? GetComponent<ISkeletonAnimation>();
-			if (spineComponent == null) return;
+			if (spineComponent == null) spineComponent = GetComponent<ISkeletonAnimation>();
+			if (spineComponent.IsNullOrDestroyed()) return;
 			if (bone != null) bone.SetToSetupPose();
 			OverrideLocal(spineComponent);
 		}

+ 5 - 5
spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonUtility Modules/SkeletonRagdoll2D.cs

@@ -29,7 +29,7 @@
 
 // Contributed by: Mitch Thompson
 
-#if UNITY_2019_2_OR_NEWER
+#if UNITY_2019_2 || UNITY_2019_3 || UNITY_2019_4 || UNITY_2020_1 || UNITY_2020_2 // note: 2020.3+ uses old bahavior again
 #define HINGE_JOINT_NEW_BEHAVIOUR
 #endif
 
@@ -42,7 +42,7 @@ namespace Spine.Unity.Examples {
 	public class SkeletonRagdoll2D : MonoBehaviour {
 		static Transform parentSpaceHelper;
 
-		#region Inspector
+#region Inspector
 		[Header("Hierarchy")]
 		[SpineBone]
 		public string startingBoneName = "";
@@ -72,7 +72,7 @@ namespace Spine.Unity.Examples {
 		[Range(0, 1)]
 		public float mix = 1;
 		public bool oldRagdollBehaviour = false;
-		#endregion
+#endregion
 
 		ISkeletonAnimation targetSkeletonComponent;
 		Skeleton skeleton;
@@ -110,7 +110,7 @@ namespace Spine.Unity.Examples {
 			}
 		}
 
-		#region API
+#region API
 		public Rigidbody2D[] RigidbodyArray {
 			get {
 				if (!isActive)
@@ -299,7 +299,7 @@ namespace Spine.Unity.Examples {
 			var bone = skeleton.FindBone(boneName);
 			return (bone != null && boneTable.ContainsKey(bone)) ? boneTable[bone].GetComponent<Rigidbody2D>() : null;
 		}
-		#endregion
+#endregion
 
 		/// <summary>Generates the ragdoll simulation's Transform and joint setup.</summary>
 		void RecursivelyCreateBoneProxies (Bone b) {

+ 6 - 4
spine-unity/Assets/Spine Examples/Scripts/Sample Components/SpineEventUnityHandler.cs

@@ -48,9 +48,11 @@ namespace Spine.Unity.Prototyping {
 		IAnimationStateComponent animationStateComponent;
 
 		void Start () {
-			skeletonComponent = skeletonComponent ?? GetComponent<ISkeletonComponent>();
+			if (skeletonComponent == null)
+				skeletonComponent = GetComponent<ISkeletonComponent>();
 			if (skeletonComponent == null) return;
-			animationStateComponent = animationStateComponent ?? skeletonComponent as IAnimationStateComponent;
+			if (animationStateComponent == null)
+				animationStateComponent = skeletonComponent as IAnimationStateComponent;
 			if (animationStateComponent == null) return;
 			var skeleton = skeletonComponent.Skeleton;
 			if (skeleton == null) return;
@@ -66,8 +68,8 @@ namespace Spine.Unity.Prototyping {
 		}
 
 		void OnDestroy () {
-			animationStateComponent = animationStateComponent ?? GetComponent<IAnimationStateComponent>();
-			if (animationStateComponent == null) return;
+			if (animationStateComponent == null) animationStateComponent = GetComponent<IAnimationStateComponent>();
+			if (animationStateComponent.IsNullOrDestroyed()) return;
 
 			var state = animationStateComponent.AnimationState;
 			foreach (var ep in events) {

+ 14 - 6
spine-unity/Assets/Spine/Runtime/spine-unity/ISkeletonAnimation.cs

@@ -39,8 +39,16 @@ namespace Spine.Unity {
 
 	public delegate void UpdateBonesDelegate (ISkeletonAnimation animated);
 
+	public interface ISpineComponent { }
+	public static class ISpineComponentExtensions {
+		public static bool IsNullOrDestroyed (this ISpineComponent component) {
+			if (component == null) return true;
+			return (UnityEngine.Object)component == null;
+		}
+	}
+
 	/// <summary>A Spine-Unity Component that animates a Skeleton but not necessarily with a Spine.AnimationState.</summary>
-	public interface ISkeletonAnimation {
+	public interface ISkeletonAnimation : ISpineComponent {
 		event UpdateBonesDelegate UpdateLocal;
 		event UpdateBonesDelegate UpdateWorld;
 		event UpdateBonesDelegate UpdateComplete;
@@ -48,13 +56,13 @@ namespace Spine.Unity {
 	}
 
 	/// <summary>Holds a reference to a SkeletonDataAsset.</summary>
-	public interface IHasSkeletonDataAsset {
+	public interface IHasSkeletonDataAsset : ISpineComponent {
 		/// <summary>Gets the SkeletonDataAsset of the Spine Component.</summary>
 		SkeletonDataAsset SkeletonDataAsset { get; }
 	}
 
 	/// <summary>A Spine-Unity Component that manages a Spine.Skeleton instance, instantiated from a SkeletonDataAsset.</summary>
-	public interface ISkeletonComponent {
+	public interface ISkeletonComponent : ISpineComponent {
 		/// <summary>Gets the SkeletonDataAsset of the Spine Component.</summary>
 		//[System.Obsolete]
 		SkeletonDataAsset SkeletonDataAsset { get; }
@@ -64,18 +72,18 @@ namespace Spine.Unity {
 	}
 
 	/// <summary>A Spine-Unity Component that uses a Spine.AnimationState to animate its skeleton.</summary>
-	public interface IAnimationStateComponent {
+	public interface IAnimationStateComponent : ISpineComponent {
 		/// <summary>Gets the Spine.AnimationState of the animated Spine Component. This is equivalent to SkeletonAnimation.state.</summary>
 		AnimationState AnimationState { get; }
 	}
 
 	/// <summary>A Spine-Unity Component that holds a reference to a SkeletonRenderer.</summary>
-	public interface IHasSkeletonRenderer {
+	public interface IHasSkeletonRenderer : ISpineComponent {
 		SkeletonRenderer SkeletonRenderer { get; }
 	}
 
 	/// <summary>A Spine-Unity Component that holds a reference to an ISkeletonComponent.</summary>
-	public interface IHasSkeletonComponent {
+	public interface IHasSkeletonComponent : ISpineComponent {
 		ISkeletonComponent SkeletonComponent { get; }
 	}
 }

+ 0 - 3
spine-unity/Assets/Spine/Runtime/spine-unity/Shaders/Sprite/SpritesPixelLit.shader

@@ -99,7 +99,6 @@ Shader "Spine/Sprite/Pixel Lit"
 				#pragma fragmentoption ARB_precision_hint_fastest
 				#pragma multi_compile_fog
 				#pragma multi_compile _ PIXELSNAP_ON
-				#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 				#pragma vertex vert
 				#pragma fragment fragBase
@@ -134,7 +133,6 @@ Shader "Spine/Sprite/Pixel Lit"
 				#pragma fragmentoption ARB_precision_hint_fastest
 				#pragma multi_compile_fog
 				#pragma multi_compile _ PIXELSNAP_ON
-				#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 				#pragma vertex vert
 				#pragma fragment fragAdd
@@ -158,7 +156,6 @@ Shader "Spine/Sprite/Pixel Lit"
 				#pragma fragmentoption ARB_precision_hint_fastest
 				#pragma multi_compile_shadowcaster
 				#pragma multi_compile _ PIXELSNAP_ON
-				#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 				#pragma vertex vert
 				#pragma fragment frag

+ 0 - 2
spine-unity/Assets/Spine/Runtime/spine-unity/Shaders/Sprite/SpritesUnlit.shader

@@ -69,7 +69,6 @@ Shader "Spine/Sprite/Unlit"
 				#pragma fragmentoption ARB_precision_hint_fastest
 				#pragma multi_compile_fog
 				#pragma multi_compile _ PIXELSNAP_ON
-				#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 				#pragma vertex vert
 				#pragma fragment frag
@@ -93,7 +92,6 @@ Shader "Spine/Sprite/Unlit"
 				#pragma fragmentoption ARB_precision_hint_fastest
 				#pragma multi_compile_shadowcaster
 				#pragma multi_compile _ PIXELSNAP_ON
-				#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 				#pragma vertex vert
 				#pragma fragment frag

+ 0 - 2
spine-unity/Assets/Spine/Runtime/spine-unity/Shaders/Sprite/SpritesVertexLit.shader

@@ -99,7 +99,6 @@ Shader "Spine/Sprite/Vertex Lit"
 				#pragma fragmentoption ARB_precision_hint_fastest
 				#pragma multi_compile_fog
 				#pragma multi_compile _ PIXELSNAP_ON
-				#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 				#pragma vertex vert
 				#pragma fragment frag
@@ -123,7 +122,6 @@ Shader "Spine/Sprite/Vertex Lit"
 				#pragma fragmentoption ARB_precision_hint_fastest
 				#pragma multi_compile_shadowcaster
 				#pragma multi_compile _ PIXELSNAP_ON
-				#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 				#pragma vertex vert
 				#pragma fragment frag

+ 5 - 5
spine-unity/Modules/com.esotericsoftware.spine.timeline/Runtime/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs

@@ -75,7 +75,7 @@ namespace Spine.Unity.Playables {
 		}
 
 		protected void HandlePause (Playable playable) {
-			if (animationStateComponent == null) return;
+			if (animationStateComponent.IsNullOrDestroyed()) return;
 
 			TrackEntry current = animationStateComponent.AnimationState.GetCurrent(trackIndex);
 			if (current != null && current == timelineStartedTrackEntry) {
@@ -86,7 +86,7 @@ namespace Spine.Unity.Playables {
 		}
 
 		protected void HandleResume (Playable playable) {
-			if (animationStateComponent == null) return;
+			if (animationStateComponent.IsNullOrDestroyed()) return;
 
 			TrackEntry current = animationStateComponent.AnimationState.GetCurrent(trackIndex);
 			if (current != null && current == pausedTrackEntry) {
@@ -95,7 +95,7 @@ namespace Spine.Unity.Playables {
 		}
 
 		protected void HandleClipEnd () {
-			if (animationStateComponent == null) return;
+			if (animationStateComponent.IsNullOrDestroyed()) return;
 
 			var state = animationStateComponent.AnimationState;
 			if (endAtClipEnd &&
@@ -116,7 +116,7 @@ namespace Spine.Unity.Playables {
 			var skeletonGraphic = playerData as SkeletonGraphic;
 			animationStateComponent = playerData as IAnimationStateComponent;
 			var skeletonComponent = playerData as ISkeletonComponent;
-			if (animationStateComponent == null || skeletonComponent == null) return;
+			if (animationStateComponent.IsNullOrDestroyed() || skeletonComponent == null) return;
 
 			var skeleton = skeletonComponent.Skeleton;
 			var state = animationStateComponent.AnimationState;
@@ -226,7 +226,7 @@ namespace Spine.Unity.Playables {
 			SkeletonAnimation skeletonAnimation, SkeletonGraphic skeletonGraphic) {
 
 			if (Application.isPlaying) return;
-			if (skeletonComponent == null || animationStateComponent == null) return;
+			if (animationStateComponent.IsNullOrDestroyed() || skeletonComponent == null) return;
 
 			int inputCount = playable.GetInputCount();
 			int lastNonZeroWeightTrack = -1;

+ 11 - 0
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-SkeletonLit-URP-2D.shader

@@ -112,7 +112,18 @@
 					return main;
 			#endif
 				half4 mask = SAMPLE_TEXTURE2D(_MaskTex, sampler_MaskTex, i.uv);
+			#if UNITY_VERSION  < 202120
 				return half4(CombinedShapeLightShared(half4(main.rgb, 1), mask, i.lightingUV).rgb, main.a);
+			#else
+				SurfaceData2D surfaceData;
+				InputData2D inputData;
+				surfaceData.albedo = main.rgb;
+				surfaceData.alpha = 1;
+				surfaceData.mask = mask;
+				inputData.uv = i.uv;
+				inputData.lightingUV = i.lightingUV;
+				return half4(CombinedShapeLightShared(surfaceData, inputData).rgb, main.a);
+			#endif
 			}
 
 			ENDHLSL

+ 0 - 2
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-Sprite-URP-2D.shader

@@ -88,7 +88,6 @@ Shader "Universal Render Pipeline/2D/Spine/Sprite"
 
 			#pragma fragmentoption ARB_precision_hint_fastest
 			#pragma multi_compile _ PIXELSNAP_ON
-			#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 			//--------------------------------------
 			// GPU Instancing
@@ -132,7 +131,6 @@ Shader "Universal Render Pipeline/2D/Spine/Sprite"
 			#pragma shader_feature _ALPHA_CLIP
 
 			#pragma multi_compile _ PIXELSNAP_ON
-			#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 			//--------------------------------------
 			// GPU Instancing

+ 2 - 1
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/SpineCoreShaders/ShaderShared.cginc

@@ -1,2 +1,3 @@
 // Adapt this path accordingly if you have unpacked the Spine directory to another location.
-#include "Assets/Spine/Runtime/spine-unity/Shaders/Sprite/CGIncludes/ShaderShared.cginc"
+#include "Assets/Spine/Runtime/spine-unity/Shaders/Sprite/CGIncludes/ShaderShared.cginc"
+//#include "Packages/com.esotericsoftware.spine.spine-unity/Runtime/spine-unity/Shaders/Sprite/CGIncludes/ShaderShared.cginc"

+ 1 - 0
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/SpineCoreShaders/Spine-Common.cginc

@@ -1,2 +1,3 @@
 // Adapt this path accordingly if you have unpacked the Spine directory to another location.
 #include "Assets/Spine/Runtime/spine-unity/Shaders/CGIncludes/Spine-Common.cginc"
+//#include "Packages/com.esotericsoftware.spine.spine-unity/Runtime/spine-unity/Shaders/CGIncludes/Spine-Common.cginc"

+ 1 - 0
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/SpineCoreShaders/Spine-Outline-Common.cginc

@@ -1,2 +1,3 @@
 // Adapt this path accordingly if you have unpacked the Spine directory to another location.
 #include "Assets/Spine/Runtime/spine-unity/Shaders/CGIncludes/Spine-Outline-Common.cginc"
+//#include "Packages/com.esotericsoftware.spine.spine-unity/Runtime/spine-unity/Shaders/CGIncludes/Spine-Outline-Common.cginc"

+ 2 - 1
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/SpineCoreShaders/SpriteLighting.cginc

@@ -1,2 +1,3 @@
 // Adapt this path accordingly if you have unpacked the Spine directory to another location.
-#include "Assets/Spine/Runtime/spine-unity/Shaders/Sprite/CGIncludes/SpriteLighting.cginc"
+#include "Assets/Spine/Runtime/spine-unity/Shaders/Sprite/CGIncludes/SpriteLighting.cginc"
+//#include "Packages/com.esotericsoftware.spine.spine-unity/Runtime/spine-unity/Shaders/Sprite/CGIncludes/SpriteLighting.cginc"

+ 2 - 7
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Spine-Sprite-URP.shader

@@ -99,14 +99,10 @@ Shader "Universal Render Pipeline/Spine/Sprite"
 			#pragma fragmentoption ARB_precision_hint_fastest
 			#pragma multi_compile_fog
 			#pragma multi_compile _ PIXELSNAP_ON
-			#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
 
 			// -------------------------------------
 			// Universal Pipeline keywords
-			#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
-			#pragma multi_compile _ MAIN_LIGHT_CALCULATE_SHADOWS
-			#pragma multi_compile _ REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR
-			#pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
+			#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
 			#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
 			#pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
 			#pragma multi_compile _ _SHADOWS_SOFT
@@ -116,9 +112,8 @@ Shader "Universal Render Pipeline/Spine/Sprite"
 			// Unity defined keywords
 			#pragma multi_compile _ DIRLIGHTMAP_COMBINED
 			#pragma multi_compile _ LIGHTMAP_ON
-			#pragma multi_compile_fog
 
-			//--------------------------------------
+	//--------------------------------------
 			// GPU Instancing
 			#pragma multi_compile_instancing