瀏覽代碼

[csharp] Fix and match AnimationState port.

pharan 7 年之前
父節點
當前提交
2d7f26a21c
共有 1 個文件被更改,包括 11 次插入20 次删除
  1. 11 20
      spine-csharp/src/AnimationState.cs

+ 11 - 20
spine-csharp/src/AnimationState.cs

@@ -36,7 +36,7 @@ namespace Spine {
 		static readonly Animation EmptyAnimation = new Animation("<empty>", new ExposedList<Timeline>(), 0);
 		internal const int Subsequent = 0, First = 1, Hold = 2, HoldMix = 3;
 
-		private AnimationStateData data;
+		protected AnimationStateData data;
 
 		private readonly Pool<TrackEntry> trackEntryPool = new Pool<TrackEntry>();
 		private readonly ExposedList<TrackEntry> tracks = new ExposedList<TrackEntry>();
@@ -49,6 +49,7 @@ namespace Spine {
 		private float timeScale = 1;
 
 		public AnimationStateData Data { get { return data; } }
+
 		/// <summary>A list of tracks that have animations, which may contain nulls.</summary>
 		public ExposedList<TrackEntry> Tracks { get { return tracks; } }
 		public float TimeScale { get { return timeScale; } set { timeScale = value; } }
@@ -70,7 +71,7 @@ namespace Spine {
 		}
 
 		/// <summary>
-		/// Increments the track entry times, setting queued animations as current if needed</summary>
+		/// Increments the track entry trackTimes, setting queued animations as current if needed</summary>
 		/// <param name="delta">delta time</param>
 		public void Update (float delta) {
 			delta *= timeScale;
@@ -109,7 +110,6 @@ namespace Spine {
 				} else if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
 					// Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom.
 					tracksItems[i] = null;
-
 					queue.End(current);
 					DisposeNext(current);
 					continue;
@@ -166,7 +166,6 @@ namespace Spine {
 			if (animationsChanged) AnimationsChanged();
 
 			var events = this.events;
-
 			bool applied = false;
 			var tracksItems = tracks.Items;
 			for (int i = 0, m = tracks.Count; i < m; i++) {
@@ -174,6 +173,7 @@ namespace Spine {
 				if (current == null || current.delay > 0) continue;
 				applied = true;
 
+				// Track 0 animations aren't for layering, so do not show the previously applied animations before the first key.
 				MixBlend blend = i == 0 ? MixBlend.First : current.mixBlend;
 
 				// Apply mixing from entries first.
@@ -242,7 +242,7 @@ namespace Spine {
 
 			if (blend == MixBlend.Add) {
 				for (int i = 0; i < timelineCount; i++)
-					(timelinesItems[i]).Apply(skeleton, animationLast, animationTime, eventBuffer, alphaMix, blend, MixDirection.Out);
+					timelinesItems[i].Apply(skeleton, animationLast, animationTime, eventBuffer, alphaMix, blend, MixDirection.Out);
 			} else {
 				var timelineMode = from.timelineMode.Items;
 				var timelineHoldMix = from.timelineHoldMix.Items;
@@ -258,10 +258,8 @@ namespace Spine {
 					float alpha;
 					switch (timelineMode[i]) {
 						case AnimationState.Subsequent:
-							if (!attachments && timeline is AttachmentTimeline)
-								continue;
-							if (!drawOrder && timeline is DrawOrderTimeline)
-								continue;
+							if (!attachments && timeline is AttachmentTimeline) continue;
+							if (!drawOrder && timeline is DrawOrderTimeline) continue;
 							timelineBlend = blend;
 							alpha = alphaMix;
 							break;
@@ -446,7 +444,7 @@ namespace Spine {
 			if (from != null) {
 				if (interrupt) queue.Interrupt(from);
 				current.mixingFrom = from;
-				current.mixingTo = current;
+				from.mixingTo = current;
 				current.mixTime = 0;
 
 				// Store interrupted mix percentage.
@@ -640,7 +638,7 @@ namespace Spine {
 		private void AnimationsChanged () {
 			animationsChanged = false;
 
-			this.propertyIDs.Clear();
+			propertyIDs.Clear();
 
 			var tracksItems = tracks.Items;
 			for (int i = 0, n = tracks.Count; i < n; i++) {
@@ -659,7 +657,7 @@ namespace Spine {
 		}
 
 		private void SetTimelineModes (TrackEntry entry) {
-			var to = entry.mixingTo;
+			TrackEntry to = entry.mixingTo;
 			var timelines = entry.animation.timelines.Items;
 			int timelinesCount = entry.animation.timelines.Count;
 			var timelineMode = entry.timelineMode.Resize(timelinesCount).Items; //timelineMode.setSize(timelinesCount);
@@ -694,7 +692,7 @@ namespace Spine {
 					}
 					timelineMode[i] = AnimationState.Hold;
 				}
-				continue_outer:	{}
+				continue_outer: {}
 			}
 		}
 
@@ -763,13 +761,6 @@ namespace Spine {
 			Event = null;
 		}
 
-		bool HasTimeline (int id) {
-			var timelines = animation.timelines.Items;
-			for (int i = 0, n = animation.timelines.Count; i < n; i++)
-				if (timelines[i].PropertyId == id) return true;
-			return false;
-		}
-
 		/// <summary>The index of the track where this entry is either current or queued.</summary>
 		public int TrackIndex { get { return trackIndex; } }