Переглянути джерело

[unity] Assorted cleanup.

pharan 7 роки тому
батько
коміт
910e88bbb3

+ 0 - 6
spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineInspectorUtility.cs

@@ -341,12 +341,6 @@ namespace Spine.Unity.Editor {
 			public SerializedSortingProperties (Renderer r) : this(new SerializedObject(r)) {}
 			public SerializedSortingProperties (Object[] renderers) : this(new SerializedObject(renderers)) {}
 
-			/// <summary>
-			/// Initializes a new instance of the
-			/// <see cref="Spine.Unity.Editor.SpineInspectorUtility.SerializedSortingProperties"/> struct.
-			/// </summary>
-			/// <param name="rendererSerializedObject">SerializedObject of the renderer. Use 
-			/// <see cref="Spine.Unity.Editor.SpineInspectorUtility.GetRenderersSerializedObject"/> to easily generate this.</param>
 			public SerializedSortingProperties (SerializedObject rendererSerializedObject) {
 				renderer = rendererSerializedObject;
 				sortingLayerID = renderer.FindProperty("m_SortingLayerID");

+ 6 - 8
spine-unity/Assets/Spine/Editor/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs

@@ -53,7 +53,6 @@ namespace Spine.Unity.Editor {
 		bool canCreateHingeChain = false;
 
 		Dictionary<Slot, List<BoundingBoxAttachment>> boundingBoxTable = new Dictionary<Slot, List<BoundingBoxAttachment>>();
-		//string currentSkinName = "";
 
 		void OnEnable () {
 			mode = this.serializedObject.FindProperty("mode");
@@ -81,7 +80,6 @@ namespace Spine.Unity.Editor {
 			if (skeleton.Skin == null)
 				skin = skeleton.Data.DefaultSkin;
 
-			//currentSkinName = skin.Name;
 			for(int i = 0; i < slotCount; i++){
 				Slot slot = skeletonUtility.skeletonRenderer.skeleton.Slots.Items[i];
 				if (slot.Bone == utilityBone.bone) {
@@ -103,7 +101,7 @@ namespace Spine.Unity.Editor {
 
 		void EvaluateFlags () {
 			utilityBone = (SkeletonUtilityBone)target;
-			skeletonUtility = utilityBone.skeletonUtility;
+			skeletonUtility = utilityBone.hierarchy;
 
 			if (Selection.objects.Length == 1) {
 				containsFollows = utilityBone.mode == SkeletonUtilityBone.Mode.Follow;
@@ -146,7 +144,7 @@ namespace Spine.Unity.Editor {
 				using (new GUILayout.HorizontalScope()) {
 					EditorGUILayout.PrefixLabel("Bone");
 					if (GUILayout.Button(str, EditorStyles.popup)) {
-						BoneSelectorContextMenu(str, ((SkeletonUtilityBone)target).skeletonUtility.skeletonRenderer.skeleton.Bones, "<None>", TargetBoneSelected);
+						BoneSelectorContextMenu(str, ((SkeletonUtilityBone)target).hierarchy.skeletonRenderer.skeleton.Bones, "<None>", TargetBoneSelected);
 					}
 				}
 			}
@@ -166,7 +164,7 @@ namespace Spine.Unity.Editor {
 			using (new GUILayout.HorizontalScope()) {
 				EditorGUILayout.Space();
 				using (new EditorGUI.DisabledGroupScope(multiObject || !utilityBone.valid || utilityBone.bone == null || utilityBone.bone.Children.Count == 0)) {
-					if (GUILayout.Button(SpineInspectorUtility.TempContent("Add Child", Icons.bone), GUILayout.MinWidth(120), GUILayout.Height(24)))
+					if (GUILayout.Button(SpineInspectorUtility.TempContent("Add Child Bone", Icons.bone), GUILayout.MinWidth(120), GUILayout.Height(24)))
 						BoneSelectorContextMenu("", utilityBone.bone.Children, "<Recursively>", SpawnChildBoneSelected);
 				}
 				using (new EditorGUI.DisabledGroupScope(multiObject || !utilityBone.valid || utilityBone.bone == null || containsOverrides)) {
@@ -260,12 +258,12 @@ namespace Spine.Unity.Editor {
 					GameObject go = skeletonUtility.SpawnBoneRecursively(bone, utilityBone.transform, utilityBone.mode, utilityBone.position, utilityBone.rotation, utilityBone.scale);
 					SkeletonUtilityBone[] newUtilityBones = go.GetComponentsInChildren<SkeletonUtilityBone>();
 					foreach (SkeletonUtilityBone utilBone in newUtilityBones)
-						SkeletonUtilityInspector.AttachIcon(utilBone);
+						SkeletonGameObjectsInspector.AttachIcon(utilBone);
 				}
 			} else {
 				var bone = (Bone)obj;
 				GameObject go = skeletonUtility.SpawnBone(bone, utilityBone.transform, utilityBone.mode, utilityBone.position, utilityBone.rotation, utilityBone.scale);
-				SkeletonUtilityInspector.AttachIcon(go.GetComponent<SkeletonUtilityBone>());
+				SkeletonGameObjectsInspector.AttachIcon(go.GetComponent<SkeletonUtilityBone>());
 				Selection.activeGameObject = go;
 				EditorGUIUtility.PingObject(go);
 			}
@@ -274,7 +272,7 @@ namespace Spine.Unity.Editor {
 		void SpawnOverride () {
 			GameObject go = skeletonUtility.SpawnBone(utilityBone.bone, utilityBone.transform.parent, SkeletonUtilityBone.Mode.Override, utilityBone.position, utilityBone.rotation, utilityBone.scale);
 			go.name = go.name + " [Override]";
-			SkeletonUtilityInspector.AttachIcon(go.GetComponent<SkeletonUtilityBone>());
+			SkeletonGameObjectsInspector.AttachIcon(go.GetComponent<SkeletonUtilityBone>());
 			Selection.activeGameObject = go;
 			EditorGUIUtility.PingObject(go);
 		}

+ 30 - 27
spine-unity/Assets/Spine/Editor/spine-unity/SkeletonUtility/Editor/SkeletonUtilityInspector.cs

@@ -41,18 +41,17 @@ namespace Spine.Unity.Editor {
 	using Icons = SpineEditorUtilities.Icons;
 
 	[CustomEditor(typeof(SkeletonUtility))]
-	public class SkeletonUtilityInspector : UnityEditor.Editor {
+	public class SkeletonGameObjectsInspector : UnityEditor.Editor {
 
-		SkeletonUtility skeletonUtility;
+		SkeletonUtility skeletonGameObjects;
 		Skeleton skeleton;
 		SkeletonRenderer skeletonRenderer;
 		bool isPrefab;
-
-		GUIContent SpawnHierarchyButtonLabel = new GUIContent("Spawn Hierarchy", Icons.skeleton);
+		readonly GUIContent SpawnHierarchyButtonLabel = new GUIContent("Spawn Hierarchy", Icons.skeleton);
 
 		void OnEnable () {
-			skeletonUtility = (SkeletonUtility)target;
-			skeletonRenderer = skeletonUtility.GetComponent<SkeletonRenderer>();
+			skeletonGameObjects = (SkeletonUtility)target;
+			skeletonRenderer = skeletonGameObjects.GetComponent<SkeletonRenderer>();
 			skeleton = skeletonRenderer.Skeleton;
 
 			if (skeleton == null) {
@@ -77,9 +76,13 @@ namespace Spine.Unity.Editor {
 				return;	
 			}
 
-			skeletonUtility.boneRoot = (Transform)EditorGUILayout.ObjectField("Bone Root", skeletonUtility.boneRoot, typeof(Transform), true);
+			EditorGUILayout.PropertyField(serializedObject.FindProperty("boneRoot"), SpineInspectorUtility.TempContent("Skeleton Root"));
+
+			bool hasRootBone = skeletonGameObjects.boneRoot != null;
+
+			if (!hasRootBone)
+				EditorGUILayout.HelpBox("No hierarchy found. Use Spawn Hierarchy to generate GameObjects for bones.", MessageType.Info);
 
-			bool hasRootBone = skeletonUtility.boneRoot != null;
 			using (new EditorGUI.DisabledGroupScope(hasRootBone)) {
 				if (SpineInspectorUtility.LargeCenteredButton(SpawnHierarchyButtonLabel))
 					SpawnHierarchyContextMenu();
@@ -87,37 +90,37 @@ namespace Spine.Unity.Editor {
 
 			if (hasRootBone) {
 				if (SpineInspectorUtility.CenteredButton(new GUIContent("Remove Hierarchy"))) {
-					Undo.RegisterCompleteObjectUndo(skeletonUtility, "Remove Hierarchy");
-					Undo.DestroyObjectImmediate(skeletonUtility.boneRoot.gameObject);
-					skeletonUtility.boneRoot = null;
+					Undo.RegisterCompleteObjectUndo(skeletonGameObjects, "Remove Hierarchy");
+					Undo.DestroyObjectImmediate(skeletonGameObjects.boneRoot.gameObject);
+					skeletonGameObjects.boneRoot = null;
 				}
 			}
 		}
 
 		void SpawnHierarchyContextMenu () {
-			GenericMenu menu = new GenericMenu();
+			var menu = new GenericMenu();
 
-			menu.AddItem(new GUIContent("Follow"), false, SpawnFollowHierarchy);
+			menu.AddItem(new GUIContent("Follow all bones"), false, SpawnFollowHierarchy);
 			menu.AddItem(new GUIContent("Follow (Root Only)"), false, SpawnFollowHierarchyRootOnly);
 			menu.AddSeparator("");
-			menu.AddItem(new GUIContent("Override"), false, SpawnOverrideHierarchy);
+			menu.AddItem(new GUIContent("Override all bones"), false, SpawnOverrideHierarchy);
 			menu.AddItem(new GUIContent("Override (Root Only)"), false, SpawnOverrideHierarchyRootOnly);
 
 			menu.ShowAsContext();
 		}
 
-		public static void AttachIcon (SkeletonUtilityBone utilityBone) {
-			Skeleton skeleton = utilityBone.skeletonUtility.skeletonRenderer.skeleton;
-			Texture2D icon = utilityBone.bone.Data.Length == 0 ? Icons.nullBone : Icons.boneNib;
+		public static void AttachIcon (SkeletonUtilityBone boneComponent) {
+			Skeleton skeleton = boneComponent.hierarchy.skeletonRenderer.skeleton;
+			Texture2D icon = boneComponent.bone.Data.Length == 0 ? Icons.nullBone : Icons.boneNib;
 
 			foreach (IkConstraint c in skeleton.IkConstraints)
-				if (c.Target == utilityBone.bone) {
+				if (c.Target == boneComponent.bone) {
 					icon = Icons.constraintNib;
 					break;
 				}
 
 			typeof(EditorGUIUtility).InvokeMember("SetIconForObject", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.NonPublic, null, null, new object[2] {
-				utilityBone.gameObject,
+				boneComponent.gameObject,
 				icon
 			});
 		}
@@ -131,23 +134,23 @@ namespace Spine.Unity.Editor {
 		}
 
 		void SpawnFollowHierarchy () {
-			Selection.activeGameObject = skeletonUtility.SpawnHierarchy(SkeletonUtilityBone.Mode.Follow, true, true, true);
-			AttachIconsToChildren(skeletonUtility.boneRoot);
+			Selection.activeGameObject = skeletonGameObjects.SpawnHierarchy(SkeletonUtilityBone.Mode.Follow, true, true, true);
+			AttachIconsToChildren(skeletonGameObjects.boneRoot);
 		}
 
 		void SpawnFollowHierarchyRootOnly () {
-			Selection.activeGameObject = skeletonUtility.SpawnRoot(SkeletonUtilityBone.Mode.Follow, true, true, true);
-			AttachIconsToChildren(skeletonUtility.boneRoot);
+			Selection.activeGameObject = skeletonGameObjects.SpawnRoot(SkeletonUtilityBone.Mode.Follow, true, true, true);
+			AttachIconsToChildren(skeletonGameObjects.boneRoot);
 		}
 
 		void SpawnOverrideHierarchy () {
-			Selection.activeGameObject = skeletonUtility.SpawnHierarchy(SkeletonUtilityBone.Mode.Override, true, true, true);
-			AttachIconsToChildren(skeletonUtility.boneRoot);
+			Selection.activeGameObject = skeletonGameObjects.SpawnHierarchy(SkeletonUtilityBone.Mode.Override, true, true, true);
+			AttachIconsToChildren(skeletonGameObjects.boneRoot);
 		}
 
 		void SpawnOverrideHierarchyRootOnly () {
-			Selection.activeGameObject = skeletonUtility.SpawnRoot(SkeletonUtilityBone.Mode.Override, true, true, true);
-			AttachIconsToChildren(skeletonUtility.boneRoot);
+			Selection.activeGameObject = skeletonGameObjects.SpawnRoot(SkeletonUtilityBone.Mode.Override, true, true, true);
+			AttachIconsToChildren(skeletonGameObjects.boneRoot);
 		}
 	}
 

+ 11 - 1
spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/SkeletonDataAsset.cs.meta

@@ -1,8 +1,18 @@
 fileFormatVersion: 2
 guid: f1b3b4b945939a54ea0b23d3396115fb
+timeCreated: 1536403985
+licenseType: Pro
 MonoImporter:
   serializedVersion: 2
-  defaultReferences: []
+  defaultReferences:
+  - multiplyMaterialTemplate: {fileID: 2100000, guid: 53bf0ab317d032d418cf1252d68f51df,
+      type: 2}
+  - screenMaterialTemplate: {fileID: 2100000, guid: 73f0f46d3177c614baf0fa48d646a9be,
+      type: 2}
+  - additiveMaterialTemplate: {fileID: 2100000, guid: 4deba332d47209e4780b3c5fcf0e3745,
+      type: 2}
+  - skeletonJSON: {instanceID: 0}
+  - controller: {instanceID: 0}
   executionOrder: 0
   icon: {fileID: 2800000, guid: 68defdbc95b30a74a9ad396bfc9a2277, type: 3}
   userData: 

+ 1 - 3
spine-unity/Assets/Spine/Runtime/spine-unity/Components/BoneFollower.cs

@@ -65,10 +65,8 @@ namespace Spine.Unity {
 		#endregion
 
 		[NonSerialized] public bool valid;
-		/// <summary>
-		/// The bone.
-		/// </summary>
 		[NonSerialized] public Bone bone;
+
 		Transform skeletonTransform;
 		bool skeletonTransformIsParent;
 

+ 2 - 1
spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs

@@ -58,7 +58,6 @@ namespace Spine.Unity {
 		[System.NonSerialized] public readonly List<Slot> separatorSlots = new List<Slot>();
 
 		[Range(-0.1f, 0f)] public float zSpacing;
-		//public bool renderMeshes = true;
 		public bool useClipping = true;
 		public bool immutableTriangles = false;
 		public bool pmaVertexColors = true;
@@ -311,7 +310,9 @@ namespace Spine.Unity {
 			// STEP 3. Move the mesh data into a UnityEngine.Mesh ===========================================================================
 			var currentMesh = currentSmartMesh.mesh;
 			meshGenerator.FillVertexData(currentMesh);
+
 			rendererBuffers.UpdateSharedMaterials(workingSubmeshInstructions);
+
 			if (updateTriangles) { // Check if the triangles should also be updated.
 				meshGenerator.FillTriangles(currentMesh);
 				meshRenderer.sharedMaterials = rendererBuffers.GetUpdatedSharedMaterialsArray();

+ 0 - 2
spine-unity/Assets/Spine/Runtime/spine-unity/ISkeletonAnimation.cs

@@ -36,8 +36,6 @@ namespace Spine.Unity {
 		event UpdateBonesDelegate UpdateLocal;
 		event UpdateBonesDelegate UpdateWorld;
 		event UpdateBonesDelegate UpdateComplete;
-
-		//void LateUpdate ();
 		Skeleton Skeleton { get; }
 	}
 

+ 7 - 0
spine-unity/Assets/Spine/Runtime/spine-unity/Modules/AttachmentTools/AttachmentTools.cs

@@ -805,6 +805,12 @@ namespace Spine.Unity.Modules.AttachmentTools {
 			skin.AddAttachment(slotIndex, keyName, attachment);
 		}
 
+		/// <summary>Adds skin items from another skin. For items that already exist, the previous values are replaced.</summary>
+		public static void AddAttachments (this Skin skin, Skin otherSkin) {
+			if (otherSkin == null) return;
+			otherSkin.CopyTo(skin, true, false);
+		}
+
 		/// <summary>Gets an attachment from the skin for the specified slot index and name.</summary>
 		public static Attachment GetAttachment (this Skin skin, string slotName, string keyName, Skeleton skeleton) {
 			int slotIndex = skeleton.FindSlotIndex(slotName);
@@ -835,6 +841,7 @@ namespace Spine.Unity.Modules.AttachmentTools {
 			skin.Attachments.Clear();
 		}
 
+		//[System.Obsolete]
 		public static void Append (this Skin destination, Skin source) {
 			source.CopyTo(destination, true, false);
 		}

+ 3 - 10
spine-unity/Assets/Spine/Runtime/spine-unity/Modules/SkeletonUtility Modules/SkeletonUtilityEyeConstraint.cs

@@ -42,9 +42,7 @@ namespace Spine.Unity.Modules {
 		Vector3 centerPoint;
 
 		protected override void OnEnable () {
-			if (!Application.isPlaying)
-				return;
-
+			if (!Application.isPlaying) return;
 			base.OnEnable();
 
 			Bounds centerBounds = new Bounds(eyes[0].localPosition, Vector3.zero);
@@ -58,19 +56,14 @@ namespace Spine.Unity.Modules {
 		}
 
 		protected override void OnDisable () {
-			if (!Application.isPlaying)
-				return;
-
+			if (!Application.isPlaying) return;
 			base.OnDisable();
 		}
 
 		public override void DoUpdate () {
-
-			if (target != null)
-				targetPosition = target.position;
+			if (target != null) targetPosition = target.position;
 
 			Vector3 goal = targetPosition;
-
 			Vector3 center = transform.TransformPoint(centerPoint);
 			Vector3 dir = goal - center;
 

+ 2 - 2
spine-unity/Assets/Spine/Runtime/spine-unity/Modules/SkeletonUtility Modules/SkeletonUtilityGroundConstraint.cs

@@ -105,8 +105,8 @@ namespace Spine.Unity.Modules {
 			v.y = Mathf.Clamp(v.y, Mathf.Min(lastHitY, hitY), float.MaxValue);
 			transform.position = v;
 
-			utilBone.bone.X = transform.localPosition.x;
-			utilBone.bone.Y = transform.localPosition.y;
+			bone.bone.X = transform.localPosition.x;
+			bone.bone.Y = transform.localPosition.y;
 
 			lastHitY = hitY;
 		}

+ 44 - 53
spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonUtility/SkeletonUtility.cs

@@ -37,7 +37,7 @@ using Spine;
 namespace Spine.Unity {
 	[RequireComponent(typeof(ISkeletonAnimation))]
 	[ExecuteInEditMode]
-	public class SkeletonUtility : MonoBehaviour {
+	public sealed class SkeletonUtility : MonoBehaviour {
 
 		#region BoundingBoxAttachment
 		public static PolygonCollider2D AddBoundingBoxGameObject (Skeleton skeleton, string skinName, string slotName, string attachmentName, Transform parent, bool isTrigger = true) {
@@ -122,23 +122,19 @@ namespace Spine.Unity {
 
 		void Update () {
 			var skeleton = skeletonRenderer.skeleton;
-			if (boneRoot != null && skeleton != null) {
+			if (skeleton != null && boneRoot != null) {
 				boneRoot.localScale = new Vector3(skeleton.scaleX, skeleton.scaleY, 1f);
 			}
 		}
 
-		[HideInInspector]
-		public SkeletonRenderer skeletonRenderer;
-		[HideInInspector]
-		public ISkeletonAnimation skeletonAnimation;
-		[System.NonSerialized]
-		public List<SkeletonUtilityBone> utilityBones = new List<SkeletonUtilityBone>();
-		[System.NonSerialized]
-		public List<SkeletonUtilityConstraint> utilityConstraints = new List<SkeletonUtilityConstraint>();
+		[HideInInspector] public SkeletonRenderer skeletonRenderer;
+		[HideInInspector] public ISkeletonAnimation skeletonAnimation;
+		[System.NonSerialized] public List<SkeletonUtilityBone> boneComponents = new List<SkeletonUtilityBone>();
+		[System.NonSerialized] public List<SkeletonUtilityConstraint> constraintComponents = new List<SkeletonUtilityConstraint>();
 
-		protected bool hasTransformBones;
-		protected bool hasUtilityConstraints;
-		protected bool needToReprocessBones;
+		bool hasOverrideBones;
+		bool hasConstraints;
+		bool needToReprocessBones;
 
 		void OnEnable () {
 			if (skeletonRenderer == null) {
@@ -176,36 +172,34 @@ namespace Spine.Unity {
 		}
 
 		void HandleRendererReset (SkeletonRenderer r) {
-			if (OnReset != null)
-				OnReset();
-
+			if (OnReset != null) OnReset();
 			CollectBones();
 		}
 
 		public void RegisterBone (SkeletonUtilityBone bone) {
-			if (utilityBones.Contains(bone))
+			if (boneComponents.Contains(bone)) {
 				return;
-			else {
-				utilityBones.Add(bone);
+			} else {
+				boneComponents.Add(bone);
 				needToReprocessBones = true;
 			}
 		}
 
 		public void UnregisterBone (SkeletonUtilityBone bone) {
-			utilityBones.Remove(bone);
+			boneComponents.Remove(bone);
 		}
 
 		public void RegisterConstraint (SkeletonUtilityConstraint constraint) {
-			if (utilityConstraints.Contains(constraint))
+			if (constraintComponents.Contains(constraint))
 				return;
 			else {
-				utilityConstraints.Add(constraint);
+				constraintComponents.Add(constraint);
 				needToReprocessBones = true;
 			}
 		}
 
 		public void UnregisterConstraint (SkeletonUtilityConstraint constraint) {
-			utilityConstraints.Remove(constraint);
+			constraintComponents.Remove(constraint);
 		}
 
 		public void CollectBones () {
@@ -222,31 +216,31 @@ namespace Spine.Unity {
 				for (int i = 0, n = transformConstraints.Count; i < n; i++)
 					constraintTargets.Add(transformConstraints.Items[i].target);
 
-				var utilityBones = this.utilityBones;
-				for (int i = 0, n = utilityBones.Count; i < n; i++) {
-					var b = utilityBones[i];
+				var boneComponents = this.boneComponents;
+				for (int i = 0, n = boneComponents.Count; i < n; i++) {
+					var b = boneComponents[i];
 					if (b.bone == null) continue;
-					hasTransformBones |= (b.mode == SkeletonUtilityBone.Mode.Override);
-					hasUtilityConstraints |= constraintTargets.Contains(b.bone);
+					hasOverrideBones |= (b.mode == SkeletonUtilityBone.Mode.Override);
+					hasConstraints |= constraintTargets.Contains(b.bone);
 				}
 
-				hasUtilityConstraints |= utilityConstraints.Count > 0;
+				hasConstraints |= constraintComponents.Count > 0;
 
 				if (skeletonAnimation != null) {
 					skeletonAnimation.UpdateWorld -= UpdateWorld;
 					skeletonAnimation.UpdateComplete -= UpdateComplete;
 
-					if (hasTransformBones || hasUtilityConstraints)
+					if (hasOverrideBones || hasConstraints)
 						skeletonAnimation.UpdateWorld += UpdateWorld;
 
-					if (hasUtilityConstraints)
+					if (hasConstraints)
 						skeletonAnimation.UpdateComplete += UpdateComplete;
 				}
 
 				needToReprocessBones = false;
 			} else {
-				utilityBones.Clear();
-				utilityConstraints.Clear();
+				boneComponents.Clear();
+				constraintComponents.Clear();
 			}
 		}
 
@@ -254,18 +248,18 @@ namespace Spine.Unity {
 			if (needToReprocessBones)
 				CollectBones();
 
-			var utilityBones = this.utilityBones;
-			if (utilityBones == null) return;
-			for (int i = 0, n = utilityBones.Count; i < n; i++)
-				utilityBones[i].transformLerpComplete = false;
+			var boneComponents = this.boneComponents;
+			if (boneComponents == null) return;
+			for (int i = 0, n = boneComponents.Count; i < n; i++)
+				boneComponents[i].transformLerpComplete = false;
 
 			UpdateAllBones(SkeletonUtilityBone.UpdatePhase.Local);
 		}
 
 		void UpdateWorld (ISkeletonAnimation anim) {
 			UpdateAllBones(SkeletonUtilityBone.UpdatePhase.World);
-			for (int i = 0, n = utilityConstraints.Count; i < n; i++)
-				utilityConstraints[i].DoUpdate();
+			for (int i = 0, n = constraintComponents.Count; i < n; i++)
+				constraintComponents[i].DoUpdate();
 		}
 
 		void UpdateComplete (ISkeletonAnimation anim) {
@@ -276,17 +270,17 @@ namespace Spine.Unity {
 			if (boneRoot == null)
 				CollectBones();
 
-			var utilityBones = this.utilityBones;
-			if (utilityBones == null) return;
-			for (int i = 0, n = utilityBones.Count; i < n; i++)
-				utilityBones[i].DoUpdate(phase);
+			var boneComponents = this.boneComponents;
+			if (boneComponents == null) return;
+			for (int i = 0, n = boneComponents.Count; i < n; i++)
+				boneComponents[i].DoUpdate(phase);
 		}
 
 		public Transform GetBoneRoot () {
 			if (boneRoot != null)
 				return boneRoot;
 
-			boneRoot = new GameObject("SkeletonUtility-Root").transform;
+			boneRoot = new GameObject("SkeletonUtility-SkeletonRoot").transform;
 			boneRoot.parent = transform;
 			boneRoot.localPosition = Vector3.zero;
 			boneRoot.localRotation = Quaternion.identity;
@@ -326,10 +320,11 @@ namespace Spine.Unity {
 
 		public GameObject SpawnBone (Bone bone, Transform parent, SkeletonUtilityBone.Mode mode, bool pos, bool rot, bool sca) {
 			GameObject go = new GameObject(bone.Data.Name);
-			go.transform.parent = parent;
+			var goTransform = go.transform;
+			goTransform.parent = parent;
 
 			SkeletonUtilityBone b = go.AddComponent<SkeletonUtilityBone>();
-			b.skeletonUtility = this;
+			b.hierarchy = this;
 			b.position = pos;
 			b.rotation = rot;
 			b.scale = sca;
@@ -341,13 +336,9 @@ namespace Spine.Unity {
 			b.valid = true;
 
 			if (mode == SkeletonUtilityBone.Mode.Override) {
-				if (rot)
-					go.transform.localRotation = Quaternion.Euler(0, 0, b.bone.AppliedRotation);
-
-				if (pos)
-					go.transform.localPosition = new Vector3(b.bone.X, b.bone.Y, 0);
-
-				go.transform.localScale = new Vector3(b.bone.scaleX, b.bone.scaleY, 0);
+				if (rot) goTransform.localRotation = Quaternion.Euler(0, 0, b.bone.AppliedRotation);
+				if (pos) goTransform.localPosition = new Vector3(b.bone.X, b.bone.Y, 0);
+				goTransform.localScale = new Vector3(b.bone.scaleX, b.bone.scaleY, 0);
 			}
 
 			return go;

+ 14 - 18
spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonUtility/SkeletonUtilityBone.cs

@@ -28,15 +28,13 @@
  * POSSIBILITY OF SUCH DAMAGE.
  *****************************************************************************/
 
-// Contributed by: Mitch Thompson
-
 using UnityEngine;
 using Spine;
 
 namespace Spine.Unity {
 	/// <summary>Sets a GameObject's transform to match a bone on a Spine skeleton.</summary>
 	[ExecuteInEditMode]
-	[AddComponentMenu("Spine/SkeletonUtilityBone")]
+	[AddComponentMenu("Spine/SkeletonGameObjectsBone")]
 	public class SkeletonUtilityBone : MonoBehaviour {
 		public enum Mode {
 			Follow,
@@ -59,7 +57,7 @@ namespace Spine.Unity {
 		public float overrideAlpha = 1;
 		#endregion
 
-		[System.NonSerialized] public SkeletonUtility skeletonUtility;
+		[System.NonSerialized] public SkeletonUtility hierarchy;
 		[System.NonSerialized] public Bone bone;
 		[System.NonSerialized] public bool transformLerpComplete;
 		[System.NonSerialized] public bool valid;
@@ -71,23 +69,21 @@ namespace Spine.Unity {
 		public void Reset () {
 			bone = null;
 			cachedTransform = transform;
-			valid = skeletonUtility != null && skeletonUtility.skeletonRenderer != null && skeletonUtility.skeletonRenderer.valid;
+			valid = hierarchy != null && hierarchy.skeletonRenderer != null && hierarchy.skeletonRenderer.valid;
 			if (!valid)
 				return;
-			skeletonTransform = skeletonUtility.transform;
-			skeletonUtility.OnReset -= HandleOnReset;
-			skeletonUtility.OnReset += HandleOnReset;
+			skeletonTransform = hierarchy.transform;
+			hierarchy.OnReset -= HandleOnReset;
+			hierarchy.OnReset += HandleOnReset;
 			DoUpdate(UpdatePhase.Local);
 		}
 
 		void OnEnable () {
-			skeletonUtility = transform.GetComponentInParent<SkeletonUtility>();
-
-			if (skeletonUtility == null)
-				return;
+			hierarchy = transform.GetComponentInParent<SkeletonUtility>();
+			if (hierarchy == null) return;
 
-			skeletonUtility.RegisterBone(this);
-			skeletonUtility.OnReset += HandleOnReset;
+			hierarchy.RegisterBone(this);
+			hierarchy.OnReset += HandleOnReset;
 		}
 
 		void HandleOnReset () {
@@ -95,9 +91,9 @@ namespace Spine.Unity {
 		}
 
 		void OnDisable () {
-			if (skeletonUtility != null) {
-				skeletonUtility.OnReset -= HandleOnReset;
-				skeletonUtility.UnregisterBone(this);
+			if (hierarchy != null) {
+				hierarchy.OnReset -= HandleOnReset;
+				hierarchy.UnregisterBone(this);
 			}
 		}
 
@@ -107,7 +103,7 @@ namespace Spine.Unity {
 				return;
 			}
 
-			var skeleton = skeletonUtility.skeletonRenderer.skeleton;
+			var skeleton = hierarchy.skeletonRenderer.skeleton;
 
 			if (bone == null) {
 				if (string.IsNullOrEmpty(boneName)) return;

+ 6 - 8
spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonUtility/SkeletonUtilityConstraint.cs

@@ -28,25 +28,23 @@
  * POSSIBILITY OF SUCH DAMAGE.
  *****************************************************************************/
 
-// Contributed by: Mitch Thompson
-
 using UnityEngine;
 
 namespace Spine.Unity {
 	[RequireComponent(typeof(SkeletonUtilityBone)), ExecuteInEditMode]
 	public abstract class SkeletonUtilityConstraint : MonoBehaviour {
 
-		protected SkeletonUtilityBone utilBone;
-		protected SkeletonUtility skeletonUtility;
+		protected SkeletonUtilityBone bone;
+		protected SkeletonUtility hierarchy;
 
 		protected virtual void OnEnable () {
-			utilBone = GetComponent<SkeletonUtilityBone>();
-			skeletonUtility = transform.GetComponentInParent<SkeletonUtility>();
-			skeletonUtility.RegisterConstraint(this);
+			bone = GetComponent<SkeletonUtilityBone>();
+			hierarchy = transform.GetComponentInParent<SkeletonUtility>();
+			hierarchy.RegisterConstraint(this);
 		}
 
 		protected virtual void OnDisable () {
-			skeletonUtility.UnregisterConstraint(this);
+			hierarchy.UnregisterConstraint(this);
 		}
 
 		public abstract void DoUpdate ();