Przeglądaj źródła

[csharp] Minor: Fixed xml documentation tags (missing closing tags and multi-line code tags).

Harald Csaszar 10 miesięcy temu
rodzic
commit
22cc555b0d

+ 48 - 48
spine-csharp/src/Animation.cs

@@ -94,16 +94,16 @@ namespace Spine {
 		/// <param name="lastTime">The last time in seconds this animation was applied. Some timelines trigger only at specific times rather
 		/// <param name="lastTime">The last time in seconds this animation was applied. Some timelines trigger only at specific times rather
 		///					than every frame. Pass -1 the first time an animation is applied to ensure frame 0 is triggered.</param>
 		///					than every frame. Pass -1 the first time an animation is applied to ensure frame 0 is triggered.</param>
 		/// <param name="time"> The time in seconds the skeleton is being posed for. Most timelines find the frame before and the frame after
 		/// <param name="time"> The time in seconds the skeleton is being posed for. Most timelines find the frame before and the frame after
-		///					this time and interpolate between the frame values. If beyond the <see cref="Duration"/> and <code>loop</code> is
+		///					this time and interpolate between the frame values. If beyond the <see cref="Duration"/> and <c>loop</c> is
 		///					true then the animation will repeat, else the last frame will be applied.</param>
 		///					true then the animation will repeat, else the last frame will be applied.</param>
 		/// <param name="loop">If true, the animation repeats after the <see cref="Duration"/>.</param>
 		/// <param name="loop">If true, the animation repeats after the <see cref="Duration"/>.</param>
 		/// <param name="events">If any events are fired, they are added to this list. Can be null to ignore fired events or if no timelines
 		/// <param name="events">If any events are fired, they are added to this list. Can be null to ignore fired events or if no timelines
 		///					fire events.</param>
 		///					fire events.</param>
-		/// <param name="alpha"> 0 applies the current or setup values (depending on <code>blend</code>). 1 applies the timeline values. Between
+		/// <param name="alpha"> 0 applies the current or setup values (depending on <c>blend</c>). 1 applies the timeline values. Between
 		///					0 and 1 applies values between the current or setup values and the timeline values. By adjusting
 		///					0 and 1 applies values between the current or setup values and the timeline values. By adjusting
-		///					<code>alpha</code> over time, an animation can be mixed in or out. <code>alpha</code> can also be useful to apply
+		///					<c>alpha</c> over time, an animation can be mixed in or out. <c>alpha</c> can also be useful to apply
 		///					animations on top of each other (layering).</param>
 		///					animations on top of each other (layering).</param>
-		/// <param name="blend">Controls how mixing is applied when <code>alpha</code> < 1.</param>
+		/// <param name="blend">Controls how mixing is applied when <c>alpha</c> &lt; 1.</param>
 		/// <param name="direction">Indicates whether the timelines are mixing in or out. Used by timelines which perform instant transitions,
 		/// <param name="direction">Indicates whether the timelines are mixing in or out. Used by timelines which perform instant transitions,
 		///					such as <see cref="DrawOrderTimeline"/> or <see cref="AttachmentTimeline"/>.</param>
 		///					such as <see cref="DrawOrderTimeline"/> or <see cref="AttachmentTimeline"/>.</param>
 		public void Apply (Skeleton skeleton, float lastTime, float time, bool loop, ExposedList<Event> events, float alpha,
 		public void Apply (Skeleton skeleton, float lastTime, float time, bool loop, ExposedList<Event> events, float alpha,
@@ -127,7 +127,7 @@ namespace Spine {
 
 
 	/// <summary>
 	/// <summary>
 	/// Controls how timeline values are mixed with setup pose values or current pose values when a timeline is applied with
 	/// Controls how timeline values are mixed with setup pose values or current pose values when a timeline is applied with
-	/// <code>alpha</code> < 1.</summary>
+	/// <c>alpha</c> &lt; 1.</summary>
 	/// <seealso cref="Timeline.Apply(Skeleton, float, float, ExposedList, float, MixBlend, MixDirection)"/>
 	/// <seealso cref="Timeline.Apply(Skeleton, float, float, ExposedList, float, MixBlend, MixDirection)"/>
 	public enum MixBlend {
 	public enum MixBlend {
 		/// <summary> Transitions from the setup value to the timeline value (the current value is not used). Before the first frame, the
 		/// <summary> Transitions from the setup value to the timeline value (the current value is not used). Before the first frame, the
@@ -140,7 +140,7 @@ namespace Spine {
 		/// the setup value. Timelines which perform instant transitions, such as <see cref="DrawOrderTimeline"/> or
 		/// the setup value. Timelines which perform instant transitions, such as <see cref="DrawOrderTimeline"/> or
 		/// <see cref="AttachmentTimeline"/>, use the setup value before the first frame.</para>
 		/// <see cref="AttachmentTimeline"/>, use the setup value before the first frame.</para>
 		/// <para>
 		/// <para>
-		/// <code>First</code> is intended for the first animations applied, not for animations layered on top of those.</para>
+		/// <c>First</c> is intended for the first animations applied, not for animations layered on top of those.</para>
 		/// </summary>
 		/// </summary>
 		First,
 		First,
 
 
@@ -149,7 +149,7 @@ namespace Spine {
 		/// Transitions from the current value to the timeline value. No change is made before the first frame (the current value is
 		/// Transitions from the current value to the timeline value. No change is made before the first frame (the current value is
 		/// kept until the first frame).</para>
 		/// kept until the first frame).</para>
 		/// <para>
 		/// <para>
-		/// <code>Replace</code> is intended for animations layered on top of others, not for the first animations applied.</para>
+		/// <c>Replace</c> is intended for animations layered on top of others, not for the first animations applied.</para>
 		/// </summary>
 		/// </summary>
 		Replace,
 		Replace,
 
 
@@ -158,7 +158,7 @@ namespace Spine {
 		/// Transitions from the current value to the current value plus the timeline value. No change is made before the first frame
 		/// Transitions from the current value to the current value plus the timeline value. No change is made before the first frame
 		/// (the current value is kept until the first frame).</para>
 		/// (the current value is kept until the first frame).</para>
 		/// <para>
 		/// <para>
-		/// <code>Add</code> is intended for animations layered on top of others, not for the first animations applied. Properties
+		/// <c>Add</c> is intended for animations layered on top of others, not for the first animations applied. Properties
 		/// set by additive animations must be set manually or by another animation before applying the additive animations, else the
 		/// set by additive animations must be set manually or by another animation before applying the additive animations, else the
 		/// property values will increase each time the additive animations are applied.
 		/// property values will increase each time the additive animations are applied.
 		/// </para>
 		/// </para>
@@ -167,7 +167,7 @@ namespace Spine {
 	}
 	}
 
 
 	/// <summary>
 	/// <summary>
-	/// Indicates whether a timeline's <code>alpha</code> is mixing out over time toward 0 (the setup or current pose value) or
+	/// Indicates whether a timeline's <c>alpha</c> is mixing out over time toward 0 (the setup or current pose value) or
 	/// mixing in toward 1 (the timeline's value). Some timelines use this to decide how values are applied.</summary>
 	/// mixing in toward 1 (the timeline's value). Some timelines use this to decide how values are applied.</summary>
 	/// <seealso cref="Timeline.Apply(Skeleton, float, float, ExposedList, float, MixBlend, MixDirection)"/>
 	/// <seealso cref="Timeline.Apply(Skeleton, float, float, ExposedList, float, MixBlend, MixDirection)"/>
 	public enum MixDirection {
 	public enum MixDirection {
@@ -231,26 +231,26 @@ namespace Spine {
 		///					skeleton components the timeline may change.</param>
 		///					skeleton components the timeline may change.</param>
 		/// <param name="lastTime">The time this timeline was last applied. Timelines such as <see cref="EventTimeline"/> trigger only
 		/// <param name="lastTime">The time this timeline was last applied. Timelines such as <see cref="EventTimeline"/> trigger only
 		///					at specific times rather than every frame. In that case, the timeline triggers everything between
 		///					at specific times rather than every frame. In that case, the timeline triggers everything between
-		///					<code>lastTime</code> (exclusive) and <code>time</code> (inclusive). Pass -1 the first time an animation is
+		///					<c>lastTime</c> (exclusive) and <c>time</c> (inclusive). Pass -1 the first time an animation is
 		///					 applied to ensure frame 0 is triggered.</param>
 		///					 applied to ensure frame 0 is triggered.</param>
 		/// <param name="time">The time in seconds that the skeleton is being posed for. Most timelines find the frame before and the frame
 		/// <param name="time">The time in seconds that the skeleton is being posed for. Most timelines find the frame before and the frame
 		///					after this time and interpolate between the frame values.If beyond the last frame, the last frame will be
 		///					after this time and interpolate between the frame values.If beyond the last frame, the last frame will be
 		///					applied.</param>
 		///					applied.</param>
 		/// <param name="events">If any events are fired, they are added to this list. Can be null to ignore fired events or if the timeline
 		/// <param name="events">If any events are fired, they are added to this list. Can be null to ignore fired events or if the timeline
 		///					does not fire events.</param>
 		///					does not fire events.</param>
-		/// <param name="alpha">0 applies the current or setup value (depending on <code>blend</code>). 1 applies the timeline value.
+		/// <param name="alpha">0 applies the current or setup value (depending on <c>blend</c>). 1 applies the timeline value.
 		///					Between 0 and 1 applies a value between the current or setup value and the timeline value.By adjusting
 		///					Between 0 and 1 applies a value between the current or setup value and the timeline value.By adjusting
-		///					<code>alpha</code> over time, an animation can be mixed in or out. <code>alpha</code> can also be useful to
+		///					<c>alpha</c> over time, an animation can be mixed in or out. <c>alpha</c> can also be useful to
 		///					apply animations on top of each other (layering).</param>
 		///					apply animations on top of each other (layering).</param>
-		/// <param name="blend">Controls how mixing is applied when <code>alpha</code> < 1.</param>
+		/// <param name="blend">Controls how mixing is applied when <c>alpha</c> &lt; 1.</param>
 		/// <param name="direction">Indicates whether the timeline is mixing in or out. Used by timelines which perform instant transitions,
 		/// <param name="direction">Indicates whether the timeline is mixing in or out. Used by timelines which perform instant transitions,
 		///                   such as <see cref="DrawOrderTimeline"/> or <see cref="AttachmentTimeline"/>, and other such as <see cref="ScaleTimeline"/>.</param>
 		///                   such as <see cref="DrawOrderTimeline"/> or <see cref="AttachmentTimeline"/>, and other such as <see cref="ScaleTimeline"/>.</param>
 		public abstract void Apply (Skeleton skeleton, float lastTime, float time, ExposedList<Event> events, float alpha,
 		public abstract void Apply (Skeleton skeleton, float lastTime, float time, ExposedList<Event> events, float alpha,
 			MixBlend blend, MixDirection direction);
 			MixBlend blend, MixDirection direction);
 
 
 		/// <summary>Search using a stride of 1.</summary>
 		/// <summary>Search using a stride of 1.</summary>
-		/// <param name="time">Must be >= the first value in <code>frames</code>.</param>
-		/// <returns>The index of the first value <= <code>time</code>.</returns>
+		/// <param name="time">Must be >= the first value in <c>frames</c>.</param>
+		/// <returns>The index of the first value <= <c>time</c>.</returns>
 		internal static int Search (float[] frames, float time) {
 		internal static int Search (float[] frames, float time) {
 			int n = frames.Length;
 			int n = frames.Length;
 			for (int i = 1; i < n; i++)
 			for (int i = 1; i < n; i++)
@@ -259,8 +259,8 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Search using the specified stride.</summary>
 		/// <summary>Search using the specified stride.</summary>
-		/// <param name="time">Must be >= the first value in <code>frames</code>.</param>
-		/// <returns>The index of the first value <= <code>time</code>.</returns>
+		/// <param name="time">Must be >= the first value in <c>frames</c>.</param>
+		/// <returns>The index of the first value <= <c>time</c>.</returns>
 		internal static int Search (float[] frames, float time, int step) {
 		internal static int Search (float[] frames, float time, int step) {
 			int n = frames.Length;
 			int n = frames.Length;
 			for (int i = step; i < n; i += step)
 			for (int i = step; i < n; i += step)
@@ -297,25 +297,25 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the specified frame to linear interpolation.</summary>
 		/// <summary>Sets the specified frame to linear interpolation.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount - 1</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount - 1</c>, inclusive.</param>
 		public void SetLinear (int frame) {
 		public void SetLinear (int frame) {
 			curves[frame] = LINEAR;
 			curves[frame] = LINEAR;
 		}
 		}
 
 
 		/// <summary>Sets the specified frame to stepped interpolation.</summary>
 		/// <summary>Sets the specified frame to stepped interpolation.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount - 1</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount - 1</c>, inclusive.</param>
 		public void SetStepped (int frame) {
 		public void SetStepped (int frame) {
 			curves[frame] = STEPPED;
 			curves[frame] = STEPPED;
 		}
 		}
 
 
 		/// <summary>Returns the interpolation type for the specified frame.</summary>
 		/// <summary>Returns the interpolation type for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount - 1</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount - 1</c>, inclusive.</param>
 		/// <returns><see cref="LINEAR"/>, <see cref="STEPPED"/> or <see cref="BEZIER"/> + the index of the Bezier segments.</returns>
 		/// <returns><see cref="LINEAR"/>, <see cref="STEPPED"/> or <see cref="BEZIER"/> + the index of the Bezier segments.</returns>
 		public float GetCurveType (int frame) {
 		public float GetCurveType (int frame) {
 			return (int)curves[frame];
 			return (int)curves[frame];
 		}
 		}
 
 
-		/// <summary>Shrinks the storage for Bezier curves, for use when <code>bezierCount</code> (specified in the constructor) was larger
+		/// <summary>Shrinks the storage for Bezier curves, for use when <c>bezierCount</c> (specified in the constructor) was larger
 		/// than the actual number of Bezier curves.</summary>
 		/// than the actual number of Bezier curves.</summary>
 		public void Shrink (int bezierCount) {
 		public void Shrink (int bezierCount) {
 			int size = FrameCount + bezierCount * BEZIER_SIZE;
 			int size = FrameCount + bezierCount * BEZIER_SIZE;
@@ -329,9 +329,9 @@ namespace Spine {
 		/// <summary>
 		/// <summary>
 		/// Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than
 		/// Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than
 		/// one curve per frame.</summary>
 		/// one curve per frame.</summary>
-		/// <param name="bezier">The ordinal of this Bezier curve for this timeline, between 0 and <code>bezierCount - 1</code> (specified
+		/// <param name="bezier">The ordinal of this Bezier curve for this timeline, between 0 and <c>bezierCount - 1</c> (specified
 		///					in the constructor), inclusive.</param>
 		///					in the constructor), inclusive.</param>
-		/// <param name="frame">Between 0 and <code>frameCount - 1</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount - 1</c>, inclusive.</param>
 		/// <param name="value">The index of the value for the frame this curve is used for.</param>
 		/// <param name="value">The index of the value for the frame this curve is used for.</param>
 		/// <param name="time1">The time for the first key.</param>
 		/// <param name="time1">The time for the first key.</param>
 		/// <param name="value1">The value for the first key.</param>
 		/// <param name="value1">The value for the first key.</param>
@@ -366,8 +366,8 @@ namespace Spine {
 
 
 		/// <summary>
 		/// <summary>
 		/// Returns the Bezier interpolated value for the specified time.</summary>
 		/// Returns the Bezier interpolated value for the specified time.</summary>
-		/// <param name="frameIndex">The index into <see cref="Frames"/> for the values of the frame before <code>time</code>.</param>
-		/// <param name="valueOffset">The offset from <code>frameIndex</code> to the value this curve is used for.</param>
+		/// <param name="frameIndex">The index into <see cref="Frames"/> for the values of the frame before <c>time</c>.</param>
+		/// <param name="valueOffset">The offset from <c>frameIndex</c> to the value this curve is used for.</param>
 		/// <param name="i">The index of the Bezier segments. See <see cref="GetCurveType(int)"/>.</param>
 		/// <param name="i">The index of the Bezier segments. See <see cref="GetCurveType(int)"/>.</param>
 		public float GetBezierValue (float time, int frameIndex, int valueOffset, int i) {
 		public float GetBezierValue (float time, int frameIndex, int valueOffset, int i) {
 			float[] curves = this.curves;
 			float[] curves = this.curves;
@@ -406,7 +406,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and value for the specified frame.</summary>
 		/// <summary>Sets the time and value for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds</param>
 		/// <param name="time">The frame time in seconds</param>
 		public void SetFrame (int frame, float time, float value) {
 		public void SetFrame (int frame, float time, float value) {
 			frame <<= 1;
 			frame <<= 1;
@@ -544,7 +544,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and values for the specified frame.</summary>
 		/// <summary>Sets the time and values for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, float value1, float value2) {
 		public void SetFrame (int frame, float time, float value1, float value2) {
 			frame *= ENTRIES;
 			frame *= ENTRIES;
@@ -700,7 +700,7 @@ namespace Spine {
 		}
 		}
 	}
 	}
 
 
-	/// <summary>Changes a bone's local <see cref="Bone.ScaleX"> and <see cref="Bone.ScaleY">.</summary>
+	/// <summary>Changes a bone's local <see cref="Bone.ScaleX"/> and <see cref="Bone.ScaleY"/>.</summary>
 	public class ScaleTimeline : CurveTimeline2, IBoneTimeline {
 	public class ScaleTimeline : CurveTimeline2, IBoneTimeline {
 		readonly int boneIndex;
 		readonly int boneIndex;
 
 
@@ -816,7 +816,7 @@ namespace Spine {
 		}
 		}
 	}
 	}
 
 
-	/// <summary>Changes a bone's local <see cref="Bone.ScaleX">.</summary>
+	/// <summary>Changes a bone's local <see cref="Bone.ScaleX"/>.</summary>
 	public class ScaleXTimeline : CurveTimeline1, IBoneTimeline {
 	public class ScaleXTimeline : CurveTimeline1, IBoneTimeline {
 		readonly int boneIndex;
 		readonly int boneIndex;
 
 
@@ -838,7 +838,7 @@ namespace Spine {
 		}
 		}
 	}
 	}
 
 
-	/// <summary>Changes a bone's local <see cref="Bone.ScaleY">.</summary>
+	/// <summary>Changes a bone's local <see cref="Bone.ScaleY"/>.</summary>
 	public class ScaleYTimeline : CurveTimeline1, IBoneTimeline {
 	public class ScaleYTimeline : CurveTimeline1, IBoneTimeline {
 		readonly int boneIndex;
 		readonly int boneIndex;
 
 
@@ -1004,7 +1004,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the transform mode for the specified frame.</summary>
 		/// <summary>Sets the transform mode for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, Inherit inherit) {
 		public void SetFrame (int frame, float time, Inherit inherit) {
 			frame *= ENTRIES;
 			frame *= ENTRIES;
@@ -1056,7 +1056,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and color for the specified frame.</summary>
 		/// <summary>Sets the time and color for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, float r, float g, float b, float a) {
 		public void SetFrame (int frame, float time, float r, float g, float b, float a) {
 			frame *= ENTRIES;
 			frame *= ENTRIES;
@@ -1173,7 +1173,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and color for the specified frame.</summary>
 		/// <summary>Sets the time and color for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, float r, float g, float b) {
 		public void SetFrame (int frame, float time, float r, float g, float b) {
 			frame <<= 2;
 			frame <<= 2;
@@ -1333,7 +1333,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time, light color, and dark color for the specified frame.</summary>
 		/// <summary>Sets the time, light color, and dark color for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, float r, float g, float b, float a, float r2, float g2, float b2) {
 		public void SetFrame (int frame, float time, float r, float g, float b, float a, float r2, float g2, float b2) {
 			frame <<= 3;
 			frame <<= 3;
@@ -1493,7 +1493,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time, light color, and dark color for the specified frame.</summary>
 		/// <summary>Sets the time, light color, and dark color for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, float r, float g, float b, float r2, float g2, float b2) {
 		public void SetFrame (int frame, float time, float r, float g, float b, float r2, float g2, float b2) {
 			frame *= ENTRIES;
 			frame *= ENTRIES;
@@ -1638,7 +1638,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and attachment name for the specified frame.</summary>
 		/// <summary>Sets the time and attachment name for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, String attachmentName) {
 		public void SetFrame (int frame, float time, String attachmentName) {
 			frames[frame] = time;
 			frames[frame] = time;
@@ -1703,7 +1703,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and vertices for the specified frame.</summary>
 		/// <summary>Sets the time and vertices for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="vertices">Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights.</param>
 		/// <param name="vertices">Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights.</param>
 		public void SetFrame (int frame, float time, float[] vertices) {
 		public void SetFrame (int frame, float time, float[] vertices) {
@@ -1736,7 +1736,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Returns the interpolated percentage for the specified time.</summary>
 		/// <summary>Returns the interpolated percentage for the specified time.</summary>
-		/// <param name="frame">The frame before <code>time</code>.</param>
+		/// <param name="frame">The frame before <c>time</c>.</param>
 		private float GetCurvePercent (float time, int frame) {
 		private float GetCurvePercent (float time, int frame) {
 			float[] curves = this.curves;
 			float[] curves = this.curves;
 			int i = (int)curves[frame];
 			int i = (int)curves[frame];
@@ -1972,13 +1972,13 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and event for the specified frame.</summary>
 		/// <summary>Sets the time and event for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		public void SetFrame (int frame, Event e) {
 		public void SetFrame (int frame, Event e) {
 			frames[frame] = e.time;
 			frames[frame] = e.time;
 			events[frame] = e;
 			events[frame] = e;
 		}
 		}
 
 
-		/// <summary>Fires events for frames &gt; <code>lastTime</code> and &lt;= <code>time</code>.</summary>
+		/// <summary>Fires events for frames &gt; <c>lastTime</c> and &lt;= <c>time</c>.</summary>
 		public override void Apply (Skeleton skeleton, float lastTime, float time, ExposedList<Event> firedEvents, float alpha,
 		public override void Apply (Skeleton skeleton, float lastTime, float time, ExposedList<Event> firedEvents, float alpha,
 			MixBlend blend, MixDirection direction) {
 			MixBlend blend, MixDirection direction) {
 
 
@@ -2030,7 +2030,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and draw order for the specified frame.</summary>
 		/// <summary>Sets the time and draw order for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="drawOrder">For each slot in <see cref="Skeleton.Slots"/>, the index of the slot in the new draw order. May be null to use
 		/// <param name="drawOrder">For each slot in <see cref="Skeleton.Slots"/>, the index of the slot in the new draw order. May be null to use
 		///					 setup pose draw order.</param>
 		///					 setup pose draw order.</param>
@@ -2093,7 +2093,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time, mix, softness, bend direction, compress, and stretch for the specified frame.</summary>
 		/// <summary>Sets the time, mix, softness, bend direction, compress, and stretch for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="bendDirection">1 or -1.</param>
 		/// <param name="bendDirection">1 or -1.</param>
 		public void SetFrame (int frame, float time, float mix, float softness, int bendDirection, bool compress,
 		public void SetFrame (int frame, float time, float mix, float softness, int bendDirection, bool compress,
@@ -2205,7 +2205,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time, rotate mix, translate mix, scale mix, and shear mix for the specified frame.</summary>
 		/// <summary>Sets the time, rotate mix, translate mix, scale mix, and shear mix for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, float mixRotate, float mixX, float mixY, float mixScaleX, float mixScaleY,
 		public void SetFrame (int frame, float time, float mixRotate, float mixX, float mixY, float mixScaleX, float mixScaleY,
 			float mixShearY) {
 			float mixShearY) {
@@ -2388,7 +2388,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time and color for the specified frame.</summary>
 		/// <summary>Sets the time and color for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		/// <param name="time">The frame time in seconds.</param>
 		public void SetFrame (int frame, float time, float mixRotate, float mixX, float mixY) {
 		public void SetFrame (int frame, float time, float mixRotate, float mixX, float mixY) {
 			frame <<= 2;
 			frame <<= 2;
@@ -2689,13 +2689,13 @@ namespace Spine {
 			get { return frames.Length; }
 			get { return frames.Length; }
 		}
 		}
 
 
-		/// <summary>Sets the time for the specified frame.<summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <summary>Sets the time for the specified frame.</summary>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		public void SetFrame (int frame, float time) {
 		public void SetFrame (int frame, float time) {
 			frames[frame] = time;
 			frames[frame] = time;
 		}
 		}
 
 
-		/// <summary>Resets the physics constraint when frames > <code>lastTime</code> and <= <code>time</code>.</summary>
+		/// <summary>Resets the physics constraint when frames > <c>lastTime</c> and <= <c>time</c>.</summary>
 		override public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList<Event> firedEvents, float alpha, MixBlend blend,
 		override public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList<Event> firedEvents, float alpha, MixBlend blend,
 									MixDirection direction) {
 									MixDirection direction) {
 
 
@@ -2759,7 +2759,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Sets the time, mode, index, and frame time for the specified frame.</summary>
 		/// <summary>Sets the time, mode, index, and frame time for the specified frame.</summary>
-		/// <param name="frame">Between 0 and <code>frameCount</code>, inclusive.</param>
+		/// <param name="frame">Between 0 and <c>frameCount</c>, inclusive.</param>
 		/// <param name="time">Seconds between frames.</param>
 		/// <param name="time">Seconds between frames.</param>
 		public void SetFrame (int frame, float time, SequenceMode mode, int index, float delay) {
 		public void SetFrame (int frame, float time, SequenceMode mode, int index, float delay) {
 			frame *= ENTRIES;
 			frame *= ENTRIES;

+ 47 - 44
spine-csharp/src/AnimationState.cs

@@ -49,9 +49,9 @@ namespace Spine {
 		/// 2) The next track entry applied after this one does not have a timeline to set this property.<para />
 		/// 2) The next track entry applied after this one does not have a timeline to set this property.<para />
 		/// Result: Mix from the setup pose to the timeline pose.
 		/// Result: Mix from the setup pose to the timeline pose.
 		internal const int First = 1;
 		internal const int First = 1;
-		/// 1) A previously applied timeline has set this property.<br>
-		/// 2) The next track entry to be applied does have a timeline to set this property.<br>
-		/// 3) The next track entry after that one does not have a timeline to set this property.<br>
+		/// 1) A previously applied timeline has set this property.<para />
+		/// 2) The next track entry to be applied does have a timeline to set this property.<para />
+		/// 3) The next track entry after that one does not have a timeline to set this property.<para />
 		/// Result: Mix from the current pose to the timeline pose, but do not mix out. This avoids "dipping" when crossfading
 		/// Result: Mix from the current pose to the timeline pose, but do not mix out. This avoids "dipping" when crossfading
 		/// animations that key the same property. A subsequent timeline will set this property using a mix.
 		/// animations that key the same property. A subsequent timeline will set this property using a mix.
 		internal const int HoldSubsequent = 2;
 		internal const int HoldSubsequent = 2;
@@ -485,7 +485,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary> Applies the attachment timeline and sets <see cref="Slot.attachmentState"/>.</summary>
 		/// <summary> Applies the attachment timeline and sets <see cref="Slot.attachmentState"/>.</summary>
-		/// <param name="attachments">False when: 1) the attachment timeline is mixing out, 2) mix < attachmentThreshold, and 3) the timeline
+		/// <param name="attachments">False when: 1) the attachment timeline is mixing out, 2) mix &lt; attachmentThreshold, and 3) the timeline
 		/// is not the last timeline to set the slot's attachment. In that case the timeline is applied only so subsequent
 		/// is not the last timeline to set the slot's attachment. In that case the timeline is applied only so subsequent
 		/// timelines see any deform.</param>
 		/// timelines see any deform.</param>
 		private void ApplyAttachmentTimeline (AttachmentTimeline timeline, Skeleton skeleton, float time, MixBlend blend,
 		private void ApplyAttachmentTimeline (AttachmentTimeline timeline, Skeleton skeleton, float time, MixBlend blend,
@@ -730,8 +730,8 @@ namespace Spine {
 		/// equivalent to calling <see cref="SetAnimation(int, Animation, bool)"/>.</summary>
 		/// equivalent to calling <see cref="SetAnimation(int, Animation, bool)"/>.</summary>
 		/// <param name="delay">
 		/// <param name="delay">
 		/// If &gt; 0, sets <see cref="TrackEntry.Delay"/>. If &lt;= 0, the delay set is the duration of the previous track entry
 		/// If &gt; 0, sets <see cref="TrackEntry.Delay"/>. If &lt;= 0, the delay set is the duration of the previous track entry
-		/// minus any mix duration (from the <see cref="AnimationStateData"/> plus the specified <code>Delay</code> (ie the mix
-		/// ends at (<code>Delay</code> = 0) or before (<code>Delay</code> &lt; 0) the previous track entry duration). If the
+		/// minus any mix duration (from the <see cref="AnimationStateData"/> plus the specified <c>Delay</c> (ie the mix
+		/// ends at (<c>Delay</c> = 0) or before (<c>Delay</c> &lt; 0) the previous track entry duration). If the
 		/// previous entry is looping, its next loop completion is used instead of its duration.
 		/// previous entry is looping, its next loop completion is used instead of its duration.
 		/// </param>
 		/// </param>
 		/// <returns>A track entry to allow further customization of animation playback. References to the track entry must not be kept
 		/// <returns>A track entry to allow further customization of animation playback. References to the track entry must not be kept
@@ -791,8 +791,8 @@ namespace Spine {
 		/// <param name="trackIndex">Track number.</param>
 		/// <param name="trackIndex">Track number.</param>
 		/// <param name="mixDuration">Mix duration.</param>
 		/// <param name="mixDuration">Mix duration.</param>
 		/// <param name="delay">If &gt; 0, sets <see cref="TrackEntry.Delay"/>. If &lt;= 0, the delay set is the duration of the previous track entry
 		/// <param name="delay">If &gt; 0, sets <see cref="TrackEntry.Delay"/>. If &lt;= 0, the delay set is the duration of the previous track entry
-		/// minus any mix duration plus the specified <code>Delay</code> (ie the mix ends at (<code>Delay</code> = 0) or
-		/// before (<code>Delay</code> &lt; 0) the previous track entry duration). If the previous entry is looping, its next
+		/// minus any mix duration plus the specified <c>Delay</c> (ie the mix ends at (<c>Delay</c> = 0) or
+		/// before (<c>Delay</c> &lt; 0) the previous track entry duration). If the previous entry is looping, its next
 		/// loop completion is used instead of its duration.</param>
 		/// loop completion is used instead of its duration.</param>
 		/// <returns> A track entry to allow further customization of animation playback. References to the track entry must not be kept
 		/// <returns> A track entry to allow further customization of animation playback. References to the track entry must not be kept
 		/// after the <see cref="AnimationState.Dispose"/> event occurs.
 		/// after the <see cref="AnimationState.Dispose"/> event occurs.
@@ -939,6 +939,7 @@ namespace Spine {
 		/// <summary> Discards all listener notifications that have not yet been delivered. This can be useful to call from an
 		/// <summary> Discards all listener notifications that have not yet been delivered. This can be useful to call from an
 		/// AnimationState event subscriber when it is known that further notifications that may have been already queued for delivery
 		/// AnimationState event subscriber when it is known that further notifications that may have been already queued for delivery
 		/// are not wanted because new animations are being set.
 		/// are not wanted because new animations are being set.
+		/// </summary>
 		public void ClearListenerNotifications () {
 		public void ClearListenerNotifications () {
 			queue.Clear();
 			queue.Clear();
 		}
 		}
@@ -1048,16 +1049,16 @@ namespace Spine {
 
 
 		/// <summary>
 		/// <summary>
 		/// <para>
 		/// <para>
-		/// Seconds to postpone playing the animation. When this track entry is the current track entry, <code>Delay</code>
-		/// postpones incrementing the <see cref="TrackEntry.TrackTime"/>. When this track entry is queued, <code>Delay</code> is the time from
+		/// Seconds to postpone playing the animation. When this track entry is the current track entry, <c>Delay</c>
+		/// postpones incrementing the <see cref="TrackEntry.TrackTime"/>. When this track entry is queued, <c>Delay</c> is the time from
 		/// the start of the previous animation to when this track entry will become the current track entry (ie when the previous
 		/// the start of the previous animation to when this track entry will become the current track entry (ie when the previous
-		/// track entry <see cref="TrackEntry.TrackTime"/> &gt;= this track entry's <code>Delay</code>).</para>
+		/// track entry <see cref="TrackEntry.TrackTime"/> &gt;= this track entry's <c>Delay</c>).</para>
 		/// <para>
 		/// <para>
 		/// <see cref="TrackEntry.TimeScale"/> affects the delay.</para>
 		/// <see cref="TrackEntry.TimeScale"/> affects the delay.</para>
 		/// <para>
 		/// <para>
-		/// When using <see cref="AnimationState.AddAnimation(int, Animation, bool, float)"/> with a <code>delay</code> <= 0, the delay
+		/// When using <see cref="AnimationState.AddAnimation(int, Animation, bool, float)"/> with a <c>delay</c> &lt;= 0, the delay
 		/// is set using the mix duration from the <see cref="AnimationStateData"/>. If <see cref="mixDuration"/> is set afterward, the delay
 		/// is set using the mix duration from the <see cref="AnimationStateData"/>. If <see cref="mixDuration"/> is set afterward, the delay
-		/// may need to be adjusted.</summary>
+		/// may need to be adjusted.</para></summary>
 		public float Delay { get { return delay; } set { delay = value; } }
 		public float Delay { get { return delay; } set { delay = value; } }
 
 
 		/// <summary>
 		/// <summary>
@@ -1097,7 +1098,7 @@ namespace Spine {
 		/// <para>
 		/// <para>
 		/// Seconds when this animation starts, both initially and after looping. Defaults to 0.</para>
 		/// Seconds when this animation starts, both initially and after looping. Defaults to 0.</para>
 		/// <para>
 		/// <para>
-		/// When changing the <code>AnimationStart</code> time, it often makes sense to set <see cref="TrackEntry.AnimationLast"> to the same
+		/// When changing the <c>AnimationStart</c> time, it often makes sense to set <see cref="TrackEntry.AnimationLast"/> to the same
 		/// value to prevent timeline keys before the start time from triggering.</para>
 		/// value to prevent timeline keys before the start time from triggering.</para>
 		/// </summary>
 		/// </summary>
 		public float AnimationStart { get { return animationStart; } set { animationStart = value; } }
 		public float AnimationStart { get { return animationStart; } set { animationStart = value; } }
@@ -1110,8 +1111,8 @@ namespace Spine {
 
 
 		/// <summary>
 		/// <summary>
 		/// The time in seconds this animation was last applied. Some timelines use this for one-time triggers. Eg, when this
 		/// The time in seconds this animation was last applied. Some timelines use this for one-time triggers. Eg, when this
-		/// animation is applied, event timelines will fire all events between the <code>AnimationLast</code> time (exclusive) and
-		/// <code>AnimationTime</code> (inclusive). Defaults to -1 to ensure triggers on frame 0 happen the first time this animation
+		/// animation is applied, event timelines will fire all events between the <c>AnimationLast</c> time (exclusive) and
+		/// <c>AnimationTime</c> (inclusive). Defaults to -1 to ensure triggers on frame 0 happen the first time this animation
 		/// is applied.</summary>
 		/// is applied.</summary>
 		public float AnimationLast {
 		public float AnimationLast {
 			get { return animationLast; }
 			get { return animationLast; }
@@ -1122,12 +1123,12 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>
 		/// <summary>
-		/// Uses <see cref="TrackEntry.TrackTime"/> to compute the <code>AnimationTime</code>. When the <code>TrackTime</code> is 0, the
-		/// <code>AnimationTime</code> is equal to the <code>AnimationStart</code> time.
+		/// Uses <see cref="TrackEntry.TrackTime"/> to compute the <c>AnimationTime</c>. When the <c>TrackTime</c> is 0, the
+		/// <c>AnimationTime</c> is equal to the <c>AnimationStart</c> time.
 		/// <para>
 		/// <para>
-		/// The <code>animationTime</code> is between <see cref="AnimationStart"/> and <see cref="AnimationEnd"/>, except if this
+		/// The <c>animationTime</c> is between <see cref="AnimationStart"/> and <see cref="AnimationEnd"/>, except if this
 		/// track entry is non-looping and <see cref="AnimationEnd"/> is >= to the animation <see cref="Animation.Duration"/>, then
 		/// track entry is non-looping and <see cref="AnimationEnd"/> is >= to the animation <see cref="Animation.Duration"/>, then
-		/// <code>animationTime</code> continues to increase past <see cref="AnimationEnd"/>.</para>
+		/// <c>animationTime</c> continues to increase past <see cref="AnimationEnd"/>.</para>
 		/// </summary>
 		/// </summary>
 		public float AnimationTime {
 		public float AnimationTime {
 			get {
 			get {
@@ -1146,12 +1147,12 @@ namespace Spine {
 		/// Multiplier for the delta time when this track entry is updated, causing time for this animation to pass slower or
 		/// Multiplier for the delta time when this track entry is updated, causing time for this animation to pass slower or
 		/// faster. Defaults to 1.</para>
 		/// faster. Defaults to 1.</para>
 		/// <para>
 		/// <para>
-		/// Values < 0 are not supported. To play an animation in reverse, use <see cref="Reverse"/>.
+		/// Values &lt; 0 are not supported. To play an animation in reverse, use <see cref="Reverse"/>.</para>
 		/// <para>
 		/// <para>
 		/// <see cref="TrackEntry.MixTime"/> is not affected by track entry time scale, so <see cref="TrackEntry.MixDuration"/> may need to be adjusted to
 		/// <see cref="TrackEntry.MixTime"/> is not affected by track entry time scale, so <see cref="TrackEntry.MixDuration"/> may need to be adjusted to
 		/// match the animation speed.</para>
 		/// match the animation speed.</para>
 		/// <para>
 		/// <para>
-		/// When using <see cref="AnimationState.AddAnimation(int, Animation, bool, float)"> with a <code>Delay</code> <= 0, the
+		/// When using <see cref="AnimationState.AddAnimation(int, Animation, bool, float)"/> with a <c>Delay</c> &lt;= 0, the
 		/// <see cref="TrackEntry.Delay"/> is set using the mix duration from the <see cref="AnimationStateData"/>, assuming time scale to be 1. If
 		/// <see cref="TrackEntry.Delay"/> is set using the mix duration from the <see cref="AnimationStateData"/>, assuming time scale to be 1. If
 		/// the time scale is not 1, the delay may need to be adjusted.</para>
 		/// the time scale is not 1, the delay may need to be adjusted.</para>
 		/// <para>
 		/// <para>
@@ -1161,7 +1162,7 @@ namespace Spine {
 
 
 		/// <summary>
 		/// <summary>
 		/// <para>
 		/// <para>
-		/// Values < 1 mix this animation with the skeleton's current pose (usually the pose resulting from lower tracks). Defaults
+		/// Values &lt; 1 mix this animation with the skeleton's current pose (usually the pose resulting from lower tracks). Defaults
 		/// to 1, which overwrites the skeleton's current pose with this animation.</para>
 		/// to 1, which overwrites the skeleton's current pose with this animation.</para>
 		/// <para>
 		/// <para>
 		/// Typically track 0 is used to completely pose the skeleton, then alpha is used on higher tracks. It doesn't make sense to
 		/// Typically track 0 is used to completely pose the skeleton, then alpha is used on higher tracks. It doesn't make sense to
@@ -1173,39 +1174,40 @@ namespace Spine {
 
 
 		/// <summary>
 		/// <summary>
 		/// When the mix percentage (<see cref="TrackEntry.MixTime"/> / <see cref="TrackEntry.MixDuration"/>) is less than the
 		/// When the mix percentage (<see cref="TrackEntry.MixTime"/> / <see cref="TrackEntry.MixDuration"/>) is less than the
-		/// <code>EventThreshold</code>, event timelines are applied while this animation is being mixed out. Defaults to 0, so event
+		/// <c>EventThreshold</c>, event timelines are applied while this animation is being mixed out. Defaults to 0, so event
 		/// timelines are not applied while this animation is being mixed out.
 		/// timelines are not applied while this animation is being mixed out.
 		/// </summary>
 		/// </summary>
 		public float EventThreshold { get { return eventThreshold; } set { eventThreshold = value; } }
 		public float EventThreshold { get { return eventThreshold; } set { eventThreshold = value; } }
 
 
-		/// When <see cref="Alpha"/> is greater than <code>AlphaAttachmentThreshold</code>, attachment timelines are applied.
+		/// <summary>
+		/// When <see cref="Alpha"/> is greater than <c>AlphaAttachmentThreshold</c>, attachment timelines are applied.
 		/// Defaults to 0, so attachment timelines are always applied.
 		/// Defaults to 0, so attachment timelines are always applied.
 		/// </summary>
 		/// </summary>
 		public float AlphaAttachmentThreshold { get { return alphaAttachmentThreshold; } set { alphaAttachmentThreshold = value; } }
 		public float AlphaAttachmentThreshold { get { return alphaAttachmentThreshold; } set { alphaAttachmentThreshold = value; } }
 
 
 		/// <summary>
 		/// <summary>
 		/// When the mix percentage (<see cref="TrackEntry.MixTime"/> / <see cref="TrackEntry.MixDuration"/>) is less than the
 		/// When the mix percentage (<see cref="TrackEntry.MixTime"/> / <see cref="TrackEntry.MixDuration"/>) is less than the
-		/// <code>MixAttachmentThreshold</code>, attachment timelines are applied while this animation is being mixed out. Defaults
+		/// <c>MixAttachmentThreshold</c>, attachment timelines are applied while this animation is being mixed out. Defaults
 		/// to 0, so attachment timelines are not applied while this animation is being mixed out.
 		/// to 0, so attachment timelines are not applied while this animation is being mixed out.
 		/// </summary>
 		/// </summary>
 		public float MixAttachmentThreshold { get { return mixAttachmentThreshold; } set { mixAttachmentThreshold = value; } }
 		public float MixAttachmentThreshold { get { return mixAttachmentThreshold; } set { mixAttachmentThreshold = value; } }
 
 
 		/// <summary>
 		/// <summary>
 		/// When the mix percentage (<see cref="TrackEntry.MixTime"/> / <see cref="TrackEntry.MixDuration"/>) is less than the
 		/// When the mix percentage (<see cref="TrackEntry.MixTime"/> / <see cref="TrackEntry.MixDuration"/>) is less than the
-		/// <code>MixDrawOrderThreshold</code>, draw order timelines are applied while this animation is being mixed out. Defaults to
+		/// <c>MixDrawOrderThreshold</c>, draw order timelines are applied while this animation is being mixed out. Defaults to
 		/// 0, so draw order timelines are not applied while this animation is being mixed out.
 		/// 0, so draw order timelines are not applied while this animation is being mixed out.
 		/// </summary>
 		/// </summary>
 		public float MixDrawOrderThreshold { get { return mixDrawOrderThreshold; } set { mixDrawOrderThreshold = value; } }
 		public float MixDrawOrderThreshold { get { return mixDrawOrderThreshold; } set { mixDrawOrderThreshold = value; } }
 
 
 		/// <summary>
 		/// <summary>
-		/// The animation queued to start after this animation, or null if there is none. <code>next</code> makes up a doubly linked
+		/// The animation queued to start after this animation, or null if there is none. <c>next</c> makes up a doubly linked
 		/// list.
 		/// list.
 		/// <para>
 		/// <para>
 		/// See <see cref="AnimationState.ClearNext(TrackEntry)"/> to truncate the list.</para></summary>
 		/// See <see cref="AnimationState.ClearNext(TrackEntry)"/> to truncate the list.</para></summary>
 		public TrackEntry Next { get { return next; } }
 		public TrackEntry Next { get { return next; } }
 
 
 		/// <summary>
 		/// <summary>
-		/// The animation queued to play before this animation, or null. <code>previous</code> makes up a doubly linked list.</summary>
+		/// The animation queued to play before this animation, or null. <c>previous</c> makes up a doubly linked list.</summary>
 		public TrackEntry Previous { get { return previous; } }
 		public TrackEntry Previous { get { return previous; } }
 
 
 		/// <summary>Returns true if this track entry has been applied at least once.</summary>
 		/// <summary>Returns true if this track entry has been applied at least once.</summary>
@@ -1231,7 +1233,7 @@ namespace Spine {
 
 
 		/// <summary>
 		/// <summary>
 		/// Seconds from 0 to the <see cref="TrackEntry.MixDuration"/> when mixing from the previous animation to this animation. May be
 		/// Seconds from 0 to the <see cref="TrackEntry.MixDuration"/> when mixing from the previous animation to this animation. May be
-		/// slightly more than <code>MixDuration</code> when the mix is complete.</summary>
+		/// slightly more than <c>MixDuration</c> when the mix is complete.</summary>
 		public float MixTime { get { return mixTime; } set { mixTime = value; } }
 		public float MixTime { get { return mixTime; } set { mixTime = value; } }
 
 
 		/// <summary>
 		/// <summary>
@@ -1239,23 +1241,23 @@ namespace Spine {
 		/// Seconds for mixing from the previous animation to this animation. Defaults to the value provided by AnimationStateData
 		/// Seconds for mixing from the previous animation to this animation. Defaults to the value provided by AnimationStateData
 		/// <see cref="AnimationStateData.GetMix(Animation, Animation)"/> based on the animation before this animation (if any).</para>
 		/// <see cref="AnimationStateData.GetMix(Animation, Animation)"/> based on the animation before this animation (if any).</para>
 		/// <para>
 		/// <para>
-		/// The <code>MixDuration</code> can be set manually rather than use the value from
-		/// <see cref="AnimationStateData.GetMix(Animation, Animation)"/>. In that case, the <code>MixDuration</code> can be set for a new
+		/// The <c>MixDuration</c> can be set manually rather than use the value from
+		/// <see cref="AnimationStateData.GetMix(Animation, Animation)"/>. In that case, the <c>MixDuration</c> can be set for a new
 		/// track entry only before <see cref="AnimationState.Update(float)"/> is first called.</para>
 		/// track entry only before <see cref="AnimationState.Update(float)"/> is first called.</para>
 		/// <para>
 		/// <para>
-		/// When using <seealso cref="AnimationState.AddAnimation(int, Animation, bool, float)"/> with a <code>Delay</code> &lt;= 0, the
-		/// <see cref="TrackEntry.Delay"/> is set using the mix duration from the <see cref=" AnimationStateData"/>. If <code>mixDuration</code> is set
+		/// When using <seealso cref="AnimationState.AddAnimation(int, Animation, bool, float)"/> with a <c>Delay</c> &lt;= 0, the
+		/// <see cref="TrackEntry.Delay"/> is set using the mix duration from the <see cref=" AnimationStateData"/>. If <c>mixDuration</c> is set
 		/// afterward, the delay may need to be adjusted. For example:</para>
 		/// afterward, the delay may need to be adjusted. For example:</para>
-		/// <para><code>entry.Delay = entry.previous.TrackComplete - entry.MixDuration;</code></para>
+		/// <para><c>entry.Delay = entry.previous.TrackComplete - entry.MixDuration;</c></para>
 		/// <para>Alternatively, <see cref="SetMixDuration(float, float)"/> can be used to recompute the delay:</para>
 		/// <para>Alternatively, <see cref="SetMixDuration(float, float)"/> can be used to recompute the delay:</para>
-		/// <para><code>entry.SetMixDuration(0.25f, 0);</code></para>
+		/// <para><c>entry.SetMixDuration(0.25f, 0);</c></para>
 		/// </summary>
 		/// </summary>
 		public float MixDuration { get { return mixDuration; } set { mixDuration = value; } }
 		public float MixDuration { get { return mixDuration; } set { mixDuration = value; } }
 
 
 		/// <summary>Sets both <see cref="MixDuration"/> and <see cref="Delay"/>.</summary>
 		/// <summary>Sets both <see cref="MixDuration"/> and <see cref="Delay"/>.</summary>
-		/// <param name="delay">If > 0, sets <see cref="TrackEntry.Delay"/>. If <= 0, the delay set is the duration of the previous track
-		///		entry minus the specified mix duration plus the specified<code> delay</code> (ie the mix ends at
-		///		(<code>delay</code> = 0) or before (<code>delay</code> < 0) the previous track entry duration). If the previous
+		/// <param name="delay">If > 0, sets <see cref="TrackEntry.Delay"/>. If &lt;= 0, the delay set is the duration of the previous track
+		///		entry minus the specified mix duration plus the specified<c> delay</c> (ie the mix ends at
+		///		(<c>delay</c> = 0) or before (<c>delay</c> &lt; 0) the previous track entry duration). If the previous
 		///		entry is looping, its next loop completion is used instead of its duration.</param>
 		///		entry is looping, its next loop completion is used instead of its duration.</param>
 		public void SetMixDuration (float mixDuration, float delay) {
 		public void SetMixDuration (float mixDuration, float delay) {
 			this.mixDuration = mixDuration;
 			this.mixDuration = mixDuration;
@@ -1269,19 +1271,19 @@ namespace Spine {
 		/// </para><para>
 		/// </para><para>
 		/// Track entries on track 0 ignore this setting and always use <see cref="MixBlend.First"/>.
 		/// Track entries on track 0 ignore this setting and always use <see cref="MixBlend.First"/>.
 		/// </para><para>
 		/// </para><para>
-		///  The <code>MixBlend</code> can be set for a new track entry only before <see cref="AnimationState.Apply(Skeleton)"/> is first
+		///  The <c>MixBlend</c> can be set for a new track entry only before <see cref="AnimationState.Apply(Skeleton)"/> is first
 		///  called.</para>
 		///  called.</para>
 		/// </summary>
 		/// </summary>
 		public MixBlend MixBlend { get { return mixBlend; } set { mixBlend = value; } }
 		public MixBlend MixBlend { get { return mixBlend; } set { mixBlend = value; } }
 
 
 		/// <summary>
 		/// <summary>
 		/// The track entry for the previous animation when mixing from the previous animation to this animation, or null if no
 		/// The track entry for the previous animation when mixing from the previous animation to this animation, or null if no
-		/// mixing is currently occurring. When mixing from multiple animations, <code>MixingFrom</code> makes up a linked list.</summary>
+		/// mixing is currently occurring. When mixing from multiple animations, <c>MixingFrom</c> makes up a linked list.</summary>
 		public TrackEntry MixingFrom { get { return mixingFrom; } }
 		public TrackEntry MixingFrom { get { return mixingFrom; } }
 
 
 		/// <summary>
 		/// <summary>
 		/// The track entry for the next animation when mixing from this animation to the next animation, or null if no mixing is
 		/// The track entry for the next animation when mixing from this animation to the next animation, or null if no mixing is
-		/// currently occurring. When mixing to multiple animations, <code>MixingTo</code> makes up a linked list.</summary>
+		/// currently occurring. When mixing to multiple animations, <c>MixingTo</c> makes up a linked list.</summary>
 		public TrackEntry MixingTo { get { return mixingTo; } }
 		public TrackEntry MixingTo { get { return mixingTo; } }
 
 
 		/// <summary>
 		/// <summary>
@@ -1291,11 +1293,11 @@ namespace Spine {
 		/// <para>
 		/// <para>
 		/// When mixing between animations that key the same property, if a lower track also keys that property then the value will
 		/// When mixing between animations that key the same property, if a lower track also keys that property then the value will
 		/// briefly dip toward the lower track value during the mix. This happens because the first animation mixes from 100% to 0%
 		/// briefly dip toward the lower track value during the mix. This happens because the first animation mixes from 100% to 0%
-		/// while the second animation mixes from 0% to 100%. Setting <code>HoldPrevious</code> to true applies the first animation
+		/// while the second animation mixes from 0% to 100%. Setting <c>HoldPrevious</c> to true applies the first animation
 		/// at 100% during the mix so the lower track value is overwritten. Such dipping does not occur on the lowest track which
 		/// at 100% during the mix so the lower track value is overwritten. Such dipping does not occur on the lowest track which
 		/// keys the property, only when a higher track also keys the property.</para>
 		/// keys the property, only when a higher track also keys the property.</para>
 		/// <para>
 		/// <para>
-		/// Snapping will occur if <code>HoldPrevious</code> is true and this animation does not key all the same properties as the
+		/// Snapping will occur if <c>HoldPrevious</c> is true and this animation does not key all the same properties as the
 		/// previous animation.</para>
 		/// previous animation.</para>
 		/// </summary>
 		/// </summary>
 		public bool HoldPrevious { get { return holdPrevious; } set { holdPrevious = value; } }
 		public bool HoldPrevious { get { return holdPrevious; } set { holdPrevious = value; } }
@@ -1314,6 +1316,7 @@ namespace Spine {
 
 
 		/// <summary>Returns true if this entry is for the empty animation. See <see cref="AnimationState.SetEmptyAnimation(int, float)"/>,
 		/// <summary>Returns true if this entry is for the empty animation. See <see cref="AnimationState.SetEmptyAnimation(int, float)"/>,
 		/// <see cref="AnimationState.AddEmptyAnimation(int, float, float)"/>, and <see cref="AnimationState.SetEmptyAnimations(float)"/>.
 		/// <see cref="AnimationState.AddEmptyAnimation(int, float, float)"/>, and <see cref="AnimationState.SetEmptyAnimations(float)"/>.
+		/// </summary>
 		public bool IsEmptyAnimation { get { return animation == AnimationState.EmptyAnimation; } }
 		public bool IsEmptyAnimation { get { return animation == AnimationState.EmptyAnimation; } }
 
 
 		/// <summary>
 		/// <summary>

+ 1 - 1
spine-csharp/src/Attachments/RegionAttachment.cs

@@ -59,7 +59,7 @@ namespace Spine {
 		public string Path { get; set; }
 		public string Path { get; set; }
 		public TextureRegion Region { get { return region; } set { region = value; } }
 		public TextureRegion Region { get { return region; } set { region = value; } }
 
 
-		/// <summary>For each of the 4 vertices, a pair of <code>x,y</code> values that is the local position of the vertex.</summary>
+		/// <summary>For each of the 4 vertices, a pair of <c>x,y</c> values that is the local position of the vertex.</summary>
 		/// <seealso cref="UpdateRegion"/>
 		/// <seealso cref="UpdateRegion"/>
 		public float[] Offset { get { return offset; } }
 		public float[] Offset { get { return offset; } }
 		public float[] UVs { get { return uvs; } }
 		public float[] UVs { get { return uvs; } }

+ 2 - 2
spine-csharp/src/Skeleton.cs

@@ -68,7 +68,7 @@ namespace Spine {
 		/// <summary>The skeleton's transform constraints.</summary>
 		/// <summary>The skeleton's transform constraints.</summary>
 		public ExposedList<TransformConstraint> TransformConstraints { get { return transformConstraints; } }
 		public ExposedList<TransformConstraint> TransformConstraints { get { return transformConstraints; } }
 
 
-		/// <summary>The skeleton's current skin.</summary>
+		/// <summary>The skeleton's current skin. May be null. See <see cref="SetSkin(Spine.Skin)"/></summary>
 		public Skin Skin {
 		public Skin Skin {
 			/// <summary>The skeleton's current skin. May be null.</summary>
 			/// <summary>The skeleton's current skin. May be null.</summary>
 			get { return skin; }
 			get { return skin; }
@@ -561,7 +561,7 @@ namespace Spine {
 			return null;
 			return null;
 		}
 		}
 
 
-		/// <summary>Sets a skin by name (see <see cref="SetSkin(Skin)"/>).</summary>
+		/// <summary>Sets a skin by name (see <see cref="SetSkin(Spine.Skin)"/>).</summary>
 		public void SetSkin (string skinName) {
 		public void SetSkin (string skinName) {
 			Skin foundSkin = data.FindSkin(skinName);
 			Skin foundSkin = data.FindSkin(skinName);
 			if (foundSkin == null) throw new ArgumentException("Skin not found: " + skinName, "skinName");
 			if (foundSkin == null) throw new ArgumentException("Skin not found: " + skinName, "skinName");

+ 1 - 1
spine-csharp/src/Skin.cs

@@ -108,7 +108,7 @@ namespace Spine {
 		}
 		}
 
 
 		/// <summary>Returns all attachments in this skin for the specified slot index.</summary>
 		/// <summary>Returns all attachments in this skin for the specified slot index.</summary>
-		/// <param name="slotIndex">The target slotIndex. To find the slot index, use <see cref="Spine.SkeletonData.FindSlot"/> and <see cref="Spine.SlotData.Index"/>.
+		/// <param name="slotIndex">The target slotIndex. To find the slot index, use <see cref="Spine.SkeletonData.FindSlot"/> and <see cref="Spine.SlotData.Index"/></param>.
 		public void GetAttachments (int slotIndex, List<SkinEntry> attachments) {
 		public void GetAttachments (int slotIndex, List<SkinEntry> attachments) {
 			if (slotIndex < 0) throw new ArgumentException("slotIndex must be >= 0.");
 			if (slotIndex < 0) throw new ArgumentException("slotIndex must be >= 0.");
 			if (attachments == null) throw new ArgumentNullException("attachments", "attachments cannot be null.");
 			if (attachments == null) throw new ArgumentNullException("attachments", "attachments cannot be null.");

+ 5 - 0
spine-csharp/src/Slot.cs

@@ -131,6 +131,11 @@ namespace Spine {
 			b2 = MathUtils.Clamp(b2, 0, 1);
 			b2 = MathUtils.Clamp(b2, 0, 1);
 		}
 		}
 
 
+		/// <summary>
+		/// The current attachment for the slot, or null if the slot has no attachment.
+		/// If the attachment is changed, resets <see cref="SequenceIndex"/> and clears the <see cref="Deform"/>.
+		/// The deform is not cleared if the old attachment has the same <see cref="VertexAttachment.TimelineAttachment"/> as the
+		/// specified attachment.</summary>
 		public Attachment Attachment {
 		public Attachment Attachment {
 			/// <summary>The current attachment for the slot, or null if the slot has no attachment.</summary>
 			/// <summary>The current attachment for the slot, or null if the slot has no attachment.</summary>
 			get { return attachment; }
 			get { return attachment; }

+ 1 - 1
spine-csharp/src/package.json

@@ -2,7 +2,7 @@
 	"name": "com.esotericsoftware.spine.spine-csharp",
 	"name": "com.esotericsoftware.spine.spine-csharp",
 	"displayName": "spine-csharp Runtime",
 	"displayName": "spine-csharp Runtime",
 	"description": "This plugin provides the spine-csharp core runtime.",
 	"description": "This plugin provides the spine-csharp core runtime.",
-	"version": "4.2.30",
+	"version": "4.2.31",
 	"unity": "2018.3",
 	"unity": "2018.3",
 	"author": {
 	"author": {
 		"name": "Esoteric Software",
 		"name": "Esoteric Software",