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

Merge branch '3.6' into 3.7-beta

pharan 7 жил өмнө
parent
commit
b7da77b894

+ 22 - 5
spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs

@@ -651,7 +651,12 @@ namespace Spine.Unity.Editor {
 		SkeletonAnimation skeletonAnimation;
 		GameObject previewGameObject;
 		internal bool requiresRefresh;
+
+		#if !(UNITY_2017_4 || UNITY_2018)
 		float animationLastTime;
+		#endif
+
+		static float CurrentTime { get { return (float)EditorApplication.timeSinceStartup; } }
 
 		Action Repaint;
 		public event Action<string> OnSkinChanged;
@@ -742,7 +747,9 @@ namespace Spine.Unity.Editor {
 
 			if (previewRenderUtility == null) {
 				previewRenderUtility = new PreviewRenderUtility(true);
-				animationLastTime = Time.realtimeSinceStartup;
+				#if !(UNITY_2017_4 || UNITY_2018)
+				animationLastTime = CurrentTime;
+				#endif
 
 				const int PreviewLayer = 30;
 				const int PreviewCameraCullingMask = 1 << PreviewLayer;
@@ -770,6 +777,10 @@ namespace Spine.Unity.Editor {
 							skeletonAnimation.initialSkinName = skinName;
 							skeletonAnimation.LateUpdate();
 							previewGameObject.GetComponent<Renderer>().enabled = false;
+
+							#if UNITY_2017_4 || UNITY_2018
+							previewRenderUtility.AddSingleGO(previewGameObject);
+							#endif
 						}
 
 						if (this.ActiveTrack != null) cameraAdjustEndFrame = EditorApplication.timeSinceStartup + skeletonAnimation.AnimationState.GetCurrent(0).Alpha;
@@ -813,6 +824,7 @@ namespace Spine.Unity.Editor {
 			previewRenderUtility.BeginStaticPreview(new Rect(0, 0, width, height));
 			DoRenderPreview(false);
 			var tex = previewRenderUtility.EndStaticPreview();
+
 			return tex;
 		}
 
@@ -825,12 +837,17 @@ namespace Spine.Unity.Editor {
 				var renderer = go.GetComponent<Renderer>();
 				renderer.enabled = true;
 
+				
 				if (!EditorApplication.isPlaying) {
-					skeletonAnimation.Update((Time.realtimeSinceStartup - animationLastTime));
+					#if !(UNITY_2017_4 || UNITY_2018)
+					float current = CurrentTime;
+					float deltaTime = (current - animationLastTime);
+					skeletonAnimation.Update(deltaTime);
+					animationLastTime = current;
+					#endif
 					skeletonAnimation.LateUpdate();
-					animationLastTime = Time.realtimeSinceStartup;
 				}
-				
+
 				var thisPreviewUtilityCamera = this.PreviewUtilityCamera;
 
 				if (drawHandles) {
@@ -861,7 +878,7 @@ namespace Spine.Unity.Editor {
 			if (previewRenderUtility == null)
 				return;
 
-			if (EditorApplication.timeSinceStartup < cameraAdjustEndFrame)
+			if (CurrentTime < cameraAdjustEndFrame)
 				AdjustCameraGoals();
 
 			lastCameraPositionGoal = cameraPositionGoal;

+ 8 - 5
spine-unity/Assets/spine-unity/Modules/Timeline/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs

@@ -50,9 +50,9 @@ namespace Spine.Unity.Playables {
 			var state = spineComponent.AnimationState;
 
 			if (!Application.isPlaying) {
-#if SPINE_EDITMODEPOSE
+				#if SPINE_EDITMODEPOSE
 				PreviewEditModePose(playable, spineComponent);
-#endif
+				#endif
 				return;
 			}
 
@@ -81,7 +81,6 @@ namespace Spine.Unity.Playables {
 					if (clipData.animationReference == null) {
 						float mixDuration = clipData.customDuration ? clipData.mixDuration : state.Data.DefaultMix;
 						state.SetEmptyAnimation(0, mixDuration);
-						continue;
 					} else {
 						if (clipData.animationReference.Animation != null) {
 							Spine.TrackEntry trackEntry = state.SetAnimation(0, clipData.animationReference.Animation, clipData.loop);
@@ -96,11 +95,15 @@ namespace Spine.Unity.Playables {
 						}
 						//else Debug.LogWarningFormat("Animation named '{0}' not found", clipData.animationName);
 					}
+
+					// Ensure that the first frame ends with an updated mesh.
+					spineComponent.Update(0);
+					spineComponent.LateUpdate();
 				}
 			}
 		}
 
-#if SPINE_EDITMODEPOSE
+		#if SPINE_EDITMODEPOSE
 		public void PreviewEditModePose (Playable playable, SkeletonAnimation spineComponent) {
 			if (Application.isPlaying) return;
 			if (spineComponent == null) return;
@@ -160,7 +163,7 @@ namespace Spine.Unity.Playables {
 			// Do nothing outside of the first clip and the last clip.
 
 		}
-#endif
+		#endif
 
 	}