From 83b50f265e0d350556917627249abe4a7d083676 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 7 Sep 2021 15:32:17 +0200 Subject: [PATCH] [unity] Added missing `usedByEffector` and `usedByComposite` parameters at BoundingBoxFollower components. --- CHANGELOG.md | 1 + .../BoundingBoxFollowerGraphicInspector.cs | 20 ++++++++++++++----- .../BoundingBoxFollowerInspector.cs | 20 ++++++++++++++----- .../Following/BoundingBoxFollower.cs | 5 +++-- .../Following/BoundingBoxFollowerGraphic.cs | 5 +++-- 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8064b488..0cffbe3e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -157,6 +157,7 @@ * Timeline clips now also offer `Don't End with Clip` and `Clip End Mix Out Duration` parameters. By default when empty space follows the clip on the timeline, the empty animation is set on the track with a MixDuration of `Clip End Mix Out Duration`. Set `Don't End with Clip` to `true` to continue playing the clip's animation instead and mimic the old 3.8 behaviour. If you prefer pausing the animation instead of mixing out to the empty animation, set `Clip End Mix Out Duration` to a value less than 0, then the animation is paused instead. * Prefabs containing `SkeletonRenderer`, `SkeletonAnimation` and `SkeletonMecanim` now provide a proper Editor preview, including the preview thumbnail. * `SkeletonRenderer` (and subclasses`SkeletonAnimation` and `SkeletonMecanim`) now provide a property `Advanced - Fix Prefab Override MeshFilter`, which when enabled fixes the prefab always being marked as changed. It sets the MeshFilter's hide flags to `DontSaveInEditor`. Unfortunately this comes at the cost of references to the `MeshFilter` by other components being lost, therefore this parameter defaults to `false` to keep the safe existing behaviour. + * `BoundingBoxFollower` and `BoundingBoxFollowerGraphic` now provide previously missing `usedByEffector` and `usedByComposite` parameters to be set at all generated colliders. * **Changes of default values** diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/BoundingBoxFollowerGraphicInspector.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/BoundingBoxFollowerGraphicInspector.cs index d59f01f71..ac0142ee1 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/BoundingBoxFollowerGraphicInspector.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/BoundingBoxFollowerGraphicInspector.cs @@ -41,7 +41,8 @@ namespace Spine.Unity.Editor { [CustomEditor(typeof(BoundingBoxFollowerGraphic))] public class BoundingBoxFollowerGraphicInspector : UnityEditor.Editor { - SerializedProperty skeletonGraphic, slotName, isTrigger, clearStateOnDisable; + SerializedProperty skeletonGraphic, slotName, + isTrigger, usedByEffector, usedByComposite, clearStateOnDisable; BoundingBoxFollowerGraphic follower; bool rebuildRequired = false; bool addBoneFollower = false; @@ -60,6 +61,8 @@ namespace Spine.Unity.Editor { skeletonGraphic = serializedObject.FindProperty("skeletonGraphic"); slotName = serializedObject.FindProperty("slotName"); isTrigger = serializedObject.FindProperty("isTrigger"); + usedByEffector = serializedObject.FindProperty("usedByEffector"); + usedByComposite = serializedObject.FindProperty("usedByComposite"); clearStateOnDisable = serializedObject.FindProperty("clearStateOnDisable"); follower = (BoundingBoxFollowerGraphic)target; } @@ -118,18 +121,23 @@ namespace Spine.Unity.Editor { using (new SpineInspectorUtility.LabelWidthScope(150f)) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(isTrigger); - bool triggerChanged = EditorGUI.EndChangeCheck(); + EditorGUILayout.PropertyField(usedByEffector); + EditorGUILayout.PropertyField(usedByComposite); + bool colliderParamChanged = EditorGUI.EndChangeCheck(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(clearStateOnDisable, new GUIContent(clearStateOnDisable.displayName, "Enable this if you are pooling your Spine GameObject")); bool clearStateChanged = EditorGUI.EndChangeCheck(); - if (clearStateChanged || triggerChanged) { + if (clearStateChanged || colliderParamChanged) { serializedObject.ApplyModifiedProperties(); InitializeEditor(); - if (triggerChanged) - foreach (var col in follower.colliderTable.Values) + if (colliderParamChanged) + foreach (var col in follower.colliderTable.Values) { col.isTrigger = isTrigger.boolValue; + col.usedByEffector = usedByEffector.boolValue; + col.usedByComposite = usedByComposite.boolValue; + } } } @@ -220,6 +228,8 @@ namespace Spine.Unity.Editor { if (original != null) { newFollower.slotName = original.slotName; newFollower.isTrigger = original.isTrigger; + newFollower.usedByEffector = original.usedByEffector; + newFollower.usedByComposite = original.usedByComposite; newFollower.clearStateOnDisable = original.clearStateOnDisable; } if (slotName != null) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/BoundingBoxFollowerInspector.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/BoundingBoxFollowerInspector.cs index 8dad8994e..64c61388a 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/BoundingBoxFollowerInspector.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/BoundingBoxFollowerInspector.cs @@ -41,7 +41,8 @@ namespace Spine.Unity.Editor { [CustomEditor(typeof(BoundingBoxFollower))] public class BoundingBoxFollowerInspector : UnityEditor.Editor { - SerializedProperty skeletonRenderer, slotName, isTrigger, clearStateOnDisable; + SerializedProperty skeletonRenderer, slotName, + isTrigger, usedByEffector, usedByComposite, clearStateOnDisable; BoundingBoxFollower follower; bool rebuildRequired = false; bool addBoneFollower = false; @@ -60,6 +61,8 @@ namespace Spine.Unity.Editor { skeletonRenderer = serializedObject.FindProperty("skeletonRenderer"); slotName = serializedObject.FindProperty("slotName"); isTrigger = serializedObject.FindProperty("isTrigger"); + usedByEffector = serializedObject.FindProperty("usedByEffector"); + usedByComposite = serializedObject.FindProperty("usedByComposite"); clearStateOnDisable = serializedObject.FindProperty("clearStateOnDisable"); follower = (BoundingBoxFollower)target; } @@ -118,18 +121,23 @@ namespace Spine.Unity.Editor { using (new SpineInspectorUtility.LabelWidthScope(150f)) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(isTrigger); - bool triggerChanged = EditorGUI.EndChangeCheck(); + EditorGUILayout.PropertyField(usedByEffector); + EditorGUILayout.PropertyField(usedByComposite); + bool colliderParamChanged = EditorGUI.EndChangeCheck(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(clearStateOnDisable, new GUIContent(clearStateOnDisable.displayName, "Enable this if you are pooling your Spine GameObject")); bool clearStateChanged = EditorGUI.EndChangeCheck(); - if (clearStateChanged || triggerChanged) { + if (clearStateChanged || colliderParamChanged) { serializedObject.ApplyModifiedProperties(); InitializeEditor(); - if (triggerChanged) - foreach (var col in follower.colliderTable.Values) + if (colliderParamChanged) + foreach (var col in follower.colliderTable.Values) { col.isTrigger = isTrigger.boolValue; + col.usedByEffector = usedByEffector.boolValue; + col.usedByComposite = usedByComposite.boolValue; + } } } @@ -219,6 +227,8 @@ namespace Spine.Unity.Editor { if (original != null) { newFollower.slotName = original.slotName; newFollower.isTrigger = original.isTrigger; + newFollower.usedByEffector = original.usedByEffector; + newFollower.usedByComposite = original.usedByComposite; newFollower.clearStateOnDisable = original.clearStateOnDisable; } if (slotName != null) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/Following/BoundingBoxFollower.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/Following/BoundingBoxFollower.cs index df6128f78..0511eb80e 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/Following/BoundingBoxFollower.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/Following/BoundingBoxFollower.cs @@ -49,7 +49,7 @@ namespace Spine.Unity { public SkeletonRenderer skeletonRenderer; [SpineSlot(dataField: "skeletonRenderer", containsBoundingBoxes: true)] public string slotName; - public bool isTrigger; + public bool isTrigger, usedByEffector, usedByComposite; public bool clearStateOnDisable = true; #endregion @@ -167,9 +167,10 @@ namespace Spine.Unity { ++collidersCount; SkeletonUtility.SetColliderPointsLocal(bbCollider, slot, boundingBoxAttachment); bbCollider.isTrigger = isTrigger; + bbCollider.usedByEffector = usedByEffector; + bbCollider.usedByComposite = usedByComposite; bbCollider.enabled = false; bbCollider.hideFlags = HideFlags.NotEditable; - bbCollider.isTrigger = IsTrigger; colliderTable.Add(boundingBoxAttachment, bbCollider); nameTable.Add(boundingBoxAttachment, entry.Name); } diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/Following/BoundingBoxFollowerGraphic.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/Following/BoundingBoxFollowerGraphic.cs index 2dfbdf640..36d7fcbd3 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/Following/BoundingBoxFollowerGraphic.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/Following/BoundingBoxFollowerGraphic.cs @@ -49,7 +49,7 @@ namespace Spine.Unity { public SkeletonGraphic skeletonGraphic; [SpineSlot(dataField: "skeletonGraphic", containsBoundingBoxes: true)] public string slotName; - public bool isTrigger; + public bool isTrigger, usedByEffector, usedByComposite; public bool clearStateOnDisable = true; #endregion @@ -171,9 +171,10 @@ namespace Spine.Unity { ++collidersCount; SkeletonUtility.SetColliderPointsLocal(bbCollider, slot, boundingBoxAttachment, scale); bbCollider.isTrigger = isTrigger; + bbCollider.usedByEffector = usedByEffector; + bbCollider.usedByComposite = usedByComposite; bbCollider.enabled = false; bbCollider.hideFlags = HideFlags.NotEditable; - bbCollider.isTrigger = IsTrigger; colliderTable.Add(boundingBoxAttachment, bbCollider); nameTable.Add(boundingBoxAttachment, entry.Name); }