Эх сурвалжийг харах

Merge branch '3.6' of https://github.com/esotericsoftware/spine-runtimes into 3.6

badlogic 7 жил өмнө
parent
commit
1c04803b59

+ 14 - 9
spine-unity/Assets/Examples/Scripts/Sample Components/Legacy/SpriteAttacher.cs

@@ -142,27 +142,32 @@ namespace Spine.Unity.Modules {
 		}
 
 	}
+		
 
 	public static class SpriteAttachmentExtensions {
-		public static RegionAttachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true) {
-			return skeleton.AttachUnitySprite(slotName, sprite, Shader.Find(shaderName), applyPMA);
+		[System.Obsolete]
+		public static RegionAttachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true, float rotation = 0f) {
+			return skeleton.AttachUnitySprite(slotName, sprite, Shader.Find(shaderName), applyPMA, rotation: rotation);
 		}
 
-		public static RegionAttachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName = "", string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true) {
-			return skeletonData.AddUnitySprite(slotName, sprite, skinName, Shader.Find(shaderName), applyPMA);
+		[System.Obsolete]
+		public static RegionAttachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName = "", string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true, float rotation = 0f) {
+			return skeletonData.AddUnitySprite(slotName, sprite, skinName, Shader.Find(shaderName), applyPMA, rotation: rotation);
 		}
 
-		public static RegionAttachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, Shader shader, bool applyPMA) {
-			RegionAttachment att = applyPMA ? sprite.ToRegionAttachmentPMAClone(shader) : sprite.ToRegionAttachment(new Material(shader));
+		[System.Obsolete]
+		public static RegionAttachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, Shader shader, bool applyPMA, float rotation = 0f) {
+			RegionAttachment att = applyPMA ? sprite.ToRegionAttachmentPMAClone(shader, rotation: rotation) : sprite.ToRegionAttachment(new Material(shader), rotation: rotation);
 			skeleton.FindSlot(slotName).Attachment = att;
 			return att;
 		}
 
-		public static RegionAttachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName, Shader shader, bool applyPMA) {
-			RegionAttachment att = applyPMA ? sprite.ToRegionAttachmentPMAClone(shader) : sprite.ToRegionAttachment(new Material(shader));
+		[System.Obsolete]
+		public static RegionAttachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName, Shader shader, bool applyPMA, float rotation = 0f) {
+			RegionAttachment att = applyPMA ? sprite.ToRegionAttachmentPMAClone(shader, rotation: rotation) : sprite.ToRegionAttachment(new Material(shader), rotation);
 
 			var slotIndex = skeletonData.FindSlotIndex(slotName);
-			Skin skin = skeletonData.defaultSkin;
+			Skin skin = skeletonData.DefaultSkin;
 			if (skinName != "")
 				skin = skeletonData.FindSkin(skinName);
 

+ 33 - 3
spine-unity/Assets/Examples/Scripts/Sample Components/SlotTintBlackFollower.cs

@@ -1,4 +1,34 @@
-using UnityEngine;
+/******************************************************************************
+ * Spine Runtimes Software License v2.5
+ *
+ * Copyright (c) 2013-2016, Esoteric Software
+ * All rights reserved.
+ *
+ * You are granted a perpetual, non-exclusive, non-sublicensable, and
+ * non-transferable license to use, install, execute, and perform the Spine
+ * Runtimes software and derivative works solely for personal or internal
+ * use. Without the written permission of Esoteric Software (see Section 2 of
+ * the Spine Software License Agreement), you may not (a) modify, translate,
+ * adapt, or develop new applications using the Spine Runtimes or otherwise
+ * create derivative works or improvements of the Spine Runtimes or (b) remove,
+ * delete, alter, or obscure any trademarks or any copyright, trademark, patent,
+ * or other intellectual property or proprietary rights notices on or in the
+ * Software, including any copy thereof. Redistributions in binary or source
+ * form must include this license and terms.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
+ * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *****************************************************************************/
+
+using UnityEngine;
 using Spine.Unity;
 
 namespace Spine.Unity.Examples {
@@ -45,8 +75,8 @@ namespace Spine.Unity.Examples {
 			Slot s = slot;
 			if (s == null) return;
 
-			mb.SetColor(colorPropertyId, new Color(s.r, s.g, s.b, s.a));
-			mb.SetColor(blackPropertyId, new Color(s.r2, s.g2, s.b2, 1f));
+			mb.SetColor(colorPropertyId, s.GetColor());
+			mb.SetColor(blackPropertyId, s.GetColorTintBlack());
 
 			mr.SetPropertyBlock(mb);
 		}

+ 4 - 3
spine-unity/Assets/spine-unity/Modules/BoundingBoxFollower/Editor/BoundingBoxFollowerInspector.cs

@@ -75,13 +75,13 @@ namespace Spine.Unity.Editor {
 				serializedObject.ApplyModifiedProperties();
 			}
 
-			var sr = skeletonRenderer.objectReferenceValue as SkeletonRenderer;
-			if (sr != null && sr.gameObject == follower.gameObject) {
+			var skeletonRendererValue = skeletonRenderer.objectReferenceValue as SkeletonRenderer;
+			if (skeletonRendererValue != null && skeletonRendererValue.gameObject == follower.gameObject) {
 				using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) {
 					EditorGUILayout.HelpBox("It's ideal to add BoundingBoxFollower to a separate child GameObject of the Spine GameObject.", MessageType.Warning);
 
 					if (GUILayout.Button(new GUIContent("Move BoundingBoxFollower to new GameObject", Icons.boundingBox), GUILayout.Height(50f))) {
-						AddBoundingBoxFollowerChild(sr, follower);
+						AddBoundingBoxFollowerChild(skeletonRendererValue, follower);
 						DestroyImmediate(follower);
 						return;
 					}
@@ -156,6 +156,7 @@ namespace Spine.Unity.Editor {
 			if (Event.current.type == EventType.Repaint) {
 				if (addBoneFollower) {
 					var boneFollower = follower.gameObject.AddComponent<BoneFollower>();
+					boneFollower.skeletonRenderer = skeletonRendererValue;
 					boneFollower.SetBone(follower.Slot.Data.BoneData.Name);
 					addBoneFollower = false;
 				}

+ 26 - 17
spine-unity/Assets/spine-unity/SkeletonAnimation.cs

@@ -76,33 +76,40 @@ namespace Spine.Unity {
 		[SerializeField]
 		[SpineAnimation]
 		private string _animationName;
+
+		/// <summary>
+		/// Setting this property sets the animation of the skeleton. If invalid, it will store the animation name for the next time the skeleton is properly initialized.
+		/// Getting this property gets the name of the currently playing animation. If invalid, it will return the last stored animation name set through this property.</summary>
 		public string AnimationName {
 			get {
 				if (!valid) {
-					Debug.LogWarning("You tried access AnimationName but the SkeletonAnimation was not valid. Try checking your Skeleton Data for errors.");
-					return null;
+					return _animationName;
+				} else {
+					TrackEntry entry = state.GetCurrent(0);
+					return entry == null ? null : entry.Animation.Name;
 				}
-
-				TrackEntry entry = state.GetCurrent(0);
-				return entry == null ? null : entry.Animation.Name;
 			}
 			set {
 				if (_animationName == value)
 					return;
 				_animationName = value;
 
-				if (!valid) {
-					Debug.LogWarning("You tried to change AnimationName but the SkeletonAnimation was not valid. Try checking your Skeleton Data for errors.");
-					return;
-				}
-
-				if (string.IsNullOrEmpty(value))
+				if (string.IsNullOrEmpty(value)) {
 					state.ClearTrack(0);
-				else
-					state.SetAnimation(0, value, loop);
+				} else {
+					TrySetAnimation(value, loop);
+				}
 			}
 		}
 
+		TrackEntry TrySetAnimation (string animationName, bool animationLoop) {
+			var animationObject = skeletonDataAsset.GetSkeletonData(false).FindAnimation(animationName);
+			if (animationObject != null)
+				return state.SetAnimation(0, animationObject, animationLoop);
+
+			return null;
+		}
+
 		/// <summary>Whether or not <see cref="AnimationName"/> should loop. This only applies to the initial animation specified in the inspector, or any subsequent Animations played through .AnimationName. Animations set through state.SetAnimation are unaffected.</summary>
 		public bool loop;
 
@@ -150,19 +157,21 @@ namespace Spine.Unity {
 			#if UNITY_EDITOR
 			if (!string.IsNullOrEmpty(_animationName)) {
 				if (Application.isPlaying) {
-					state.SetAnimation(0, _animationName, loop);
+					TrackEntry startingTrack = TrySetAnimation(_animationName, loop);
+					if (startingTrack != null)
+						Update(0);
 				} else {
 					// Assume SkeletonAnimation is valid for skeletonData and skeleton. Checked above.
 					var animationObject = skeletonDataAsset.GetSkeletonData(false).FindAnimation(_animationName);
 					if (animationObject != null)
 						animationObject.PoseSkeleton(skeleton, 0f);
 				}
-				Update(0);
 			}
 			#else
 			if (!string.IsNullOrEmpty(_animationName)) {
-				state.SetAnimation(0, _animationName, loop);
-				Update(0);
+				TrackEntry startingTrack = TrySetAnimation(_animationName, loop);
+				if (startingTrack != null)
+					Update(0);
 			}
 			#endif
 		}

+ 2 - 0
spine-unity/Assets/spine-unity/SkeletonExtensions.cs

@@ -41,6 +41,8 @@ namespace Spine.Unity {
 		public static Color GetColor (this Skeleton s) { return new Color(s.r, s.g, s.b, s.a); }
 		public static Color GetColor (this RegionAttachment a) { return new Color(a.r, a.g, a.b, a.a); }
 		public static Color GetColor (this MeshAttachment a) { return new Color(a.r, a.g, a.b, a.a); }
+		public static Color GetColor (this Slot s) { return new Color(s.r, s.g, s.b, s.a); }
+		public static Color GetColorTintBlack (this Slot s) { return new Color(s.r2, s.g2, s.b2, 1f); }
 
 		public static void SetColor (this Skeleton skeleton, Color color) {
 			skeleton.A = color.a;