mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[unity] Added missing usedByEffector and usedByComposite parameters at BoundingBoxFollower components.
This commit is contained in:
parent
2ae113d5a0
commit
83b50f265e
@ -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.
|
* 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.
|
* 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.
|
* `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**
|
* **Changes of default values**
|
||||||
|
|
||||||
|
|||||||
@ -41,7 +41,8 @@ namespace Spine.Unity.Editor {
|
|||||||
|
|
||||||
[CustomEditor(typeof(BoundingBoxFollowerGraphic))]
|
[CustomEditor(typeof(BoundingBoxFollowerGraphic))]
|
||||||
public class BoundingBoxFollowerGraphicInspector : UnityEditor.Editor {
|
public class BoundingBoxFollowerGraphicInspector : UnityEditor.Editor {
|
||||||
SerializedProperty skeletonGraphic, slotName, isTrigger, clearStateOnDisable;
|
SerializedProperty skeletonGraphic, slotName,
|
||||||
|
isTrigger, usedByEffector, usedByComposite, clearStateOnDisable;
|
||||||
BoundingBoxFollowerGraphic follower;
|
BoundingBoxFollowerGraphic follower;
|
||||||
bool rebuildRequired = false;
|
bool rebuildRequired = false;
|
||||||
bool addBoneFollower = false;
|
bool addBoneFollower = false;
|
||||||
@ -60,6 +61,8 @@ namespace Spine.Unity.Editor {
|
|||||||
skeletonGraphic = serializedObject.FindProperty("skeletonGraphic");
|
skeletonGraphic = serializedObject.FindProperty("skeletonGraphic");
|
||||||
slotName = serializedObject.FindProperty("slotName");
|
slotName = serializedObject.FindProperty("slotName");
|
||||||
isTrigger = serializedObject.FindProperty("isTrigger");
|
isTrigger = serializedObject.FindProperty("isTrigger");
|
||||||
|
usedByEffector = serializedObject.FindProperty("usedByEffector");
|
||||||
|
usedByComposite = serializedObject.FindProperty("usedByComposite");
|
||||||
clearStateOnDisable = serializedObject.FindProperty("clearStateOnDisable");
|
clearStateOnDisable = serializedObject.FindProperty("clearStateOnDisable");
|
||||||
follower = (BoundingBoxFollowerGraphic)target;
|
follower = (BoundingBoxFollowerGraphic)target;
|
||||||
}
|
}
|
||||||
@ -118,18 +121,23 @@ namespace Spine.Unity.Editor {
|
|||||||
using (new SpineInspectorUtility.LabelWidthScope(150f)) {
|
using (new SpineInspectorUtility.LabelWidthScope(150f)) {
|
||||||
EditorGUI.BeginChangeCheck();
|
EditorGUI.BeginChangeCheck();
|
||||||
EditorGUILayout.PropertyField(isTrigger);
|
EditorGUILayout.PropertyField(isTrigger);
|
||||||
bool triggerChanged = EditorGUI.EndChangeCheck();
|
EditorGUILayout.PropertyField(usedByEffector);
|
||||||
|
EditorGUILayout.PropertyField(usedByComposite);
|
||||||
|
bool colliderParamChanged = EditorGUI.EndChangeCheck();
|
||||||
|
|
||||||
EditorGUI.BeginChangeCheck();
|
EditorGUI.BeginChangeCheck();
|
||||||
EditorGUILayout.PropertyField(clearStateOnDisable, new GUIContent(clearStateOnDisable.displayName, "Enable this if you are pooling your Spine GameObject"));
|
EditorGUILayout.PropertyField(clearStateOnDisable, new GUIContent(clearStateOnDisable.displayName, "Enable this if you are pooling your Spine GameObject"));
|
||||||
bool clearStateChanged = EditorGUI.EndChangeCheck();
|
bool clearStateChanged = EditorGUI.EndChangeCheck();
|
||||||
|
|
||||||
if (clearStateChanged || triggerChanged) {
|
if (clearStateChanged || colliderParamChanged) {
|
||||||
serializedObject.ApplyModifiedProperties();
|
serializedObject.ApplyModifiedProperties();
|
||||||
InitializeEditor();
|
InitializeEditor();
|
||||||
if (triggerChanged)
|
if (colliderParamChanged)
|
||||||
foreach (var col in follower.colliderTable.Values)
|
foreach (var col in follower.colliderTable.Values) {
|
||||||
col.isTrigger = isTrigger.boolValue;
|
col.isTrigger = isTrigger.boolValue;
|
||||||
|
col.usedByEffector = usedByEffector.boolValue;
|
||||||
|
col.usedByComposite = usedByComposite.boolValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,6 +228,8 @@ namespace Spine.Unity.Editor {
|
|||||||
if (original != null) {
|
if (original != null) {
|
||||||
newFollower.slotName = original.slotName;
|
newFollower.slotName = original.slotName;
|
||||||
newFollower.isTrigger = original.isTrigger;
|
newFollower.isTrigger = original.isTrigger;
|
||||||
|
newFollower.usedByEffector = original.usedByEffector;
|
||||||
|
newFollower.usedByComposite = original.usedByComposite;
|
||||||
newFollower.clearStateOnDisable = original.clearStateOnDisable;
|
newFollower.clearStateOnDisable = original.clearStateOnDisable;
|
||||||
}
|
}
|
||||||
if (slotName != null)
|
if (slotName != null)
|
||||||
|
|||||||
@ -41,7 +41,8 @@ namespace Spine.Unity.Editor {
|
|||||||
|
|
||||||
[CustomEditor(typeof(BoundingBoxFollower))]
|
[CustomEditor(typeof(BoundingBoxFollower))]
|
||||||
public class BoundingBoxFollowerInspector : UnityEditor.Editor {
|
public class BoundingBoxFollowerInspector : UnityEditor.Editor {
|
||||||
SerializedProperty skeletonRenderer, slotName, isTrigger, clearStateOnDisable;
|
SerializedProperty skeletonRenderer, slotName,
|
||||||
|
isTrigger, usedByEffector, usedByComposite, clearStateOnDisable;
|
||||||
BoundingBoxFollower follower;
|
BoundingBoxFollower follower;
|
||||||
bool rebuildRequired = false;
|
bool rebuildRequired = false;
|
||||||
bool addBoneFollower = false;
|
bool addBoneFollower = false;
|
||||||
@ -60,6 +61,8 @@ namespace Spine.Unity.Editor {
|
|||||||
skeletonRenderer = serializedObject.FindProperty("skeletonRenderer");
|
skeletonRenderer = serializedObject.FindProperty("skeletonRenderer");
|
||||||
slotName = serializedObject.FindProperty("slotName");
|
slotName = serializedObject.FindProperty("slotName");
|
||||||
isTrigger = serializedObject.FindProperty("isTrigger");
|
isTrigger = serializedObject.FindProperty("isTrigger");
|
||||||
|
usedByEffector = serializedObject.FindProperty("usedByEffector");
|
||||||
|
usedByComposite = serializedObject.FindProperty("usedByComposite");
|
||||||
clearStateOnDisable = serializedObject.FindProperty("clearStateOnDisable");
|
clearStateOnDisable = serializedObject.FindProperty("clearStateOnDisable");
|
||||||
follower = (BoundingBoxFollower)target;
|
follower = (BoundingBoxFollower)target;
|
||||||
}
|
}
|
||||||
@ -118,18 +121,23 @@ namespace Spine.Unity.Editor {
|
|||||||
using (new SpineInspectorUtility.LabelWidthScope(150f)) {
|
using (new SpineInspectorUtility.LabelWidthScope(150f)) {
|
||||||
EditorGUI.BeginChangeCheck();
|
EditorGUI.BeginChangeCheck();
|
||||||
EditorGUILayout.PropertyField(isTrigger);
|
EditorGUILayout.PropertyField(isTrigger);
|
||||||
bool triggerChanged = EditorGUI.EndChangeCheck();
|
EditorGUILayout.PropertyField(usedByEffector);
|
||||||
|
EditorGUILayout.PropertyField(usedByComposite);
|
||||||
|
bool colliderParamChanged = EditorGUI.EndChangeCheck();
|
||||||
|
|
||||||
EditorGUI.BeginChangeCheck();
|
EditorGUI.BeginChangeCheck();
|
||||||
EditorGUILayout.PropertyField(clearStateOnDisable, new GUIContent(clearStateOnDisable.displayName, "Enable this if you are pooling your Spine GameObject"));
|
EditorGUILayout.PropertyField(clearStateOnDisable, new GUIContent(clearStateOnDisable.displayName, "Enable this if you are pooling your Spine GameObject"));
|
||||||
bool clearStateChanged = EditorGUI.EndChangeCheck();
|
bool clearStateChanged = EditorGUI.EndChangeCheck();
|
||||||
|
|
||||||
if (clearStateChanged || triggerChanged) {
|
if (clearStateChanged || colliderParamChanged) {
|
||||||
serializedObject.ApplyModifiedProperties();
|
serializedObject.ApplyModifiedProperties();
|
||||||
InitializeEditor();
|
InitializeEditor();
|
||||||
if (triggerChanged)
|
if (colliderParamChanged)
|
||||||
foreach (var col in follower.colliderTable.Values)
|
foreach (var col in follower.colliderTable.Values) {
|
||||||
col.isTrigger = isTrigger.boolValue;
|
col.isTrigger = isTrigger.boolValue;
|
||||||
|
col.usedByEffector = usedByEffector.boolValue;
|
||||||
|
col.usedByComposite = usedByComposite.boolValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,6 +227,8 @@ namespace Spine.Unity.Editor {
|
|||||||
if (original != null) {
|
if (original != null) {
|
||||||
newFollower.slotName = original.slotName;
|
newFollower.slotName = original.slotName;
|
||||||
newFollower.isTrigger = original.isTrigger;
|
newFollower.isTrigger = original.isTrigger;
|
||||||
|
newFollower.usedByEffector = original.usedByEffector;
|
||||||
|
newFollower.usedByComposite = original.usedByComposite;
|
||||||
newFollower.clearStateOnDisable = original.clearStateOnDisable;
|
newFollower.clearStateOnDisable = original.clearStateOnDisable;
|
||||||
}
|
}
|
||||||
if (slotName != null)
|
if (slotName != null)
|
||||||
|
|||||||
@ -49,7 +49,7 @@ namespace Spine.Unity {
|
|||||||
public SkeletonRenderer skeletonRenderer;
|
public SkeletonRenderer skeletonRenderer;
|
||||||
[SpineSlot(dataField: "skeletonRenderer", containsBoundingBoxes: true)]
|
[SpineSlot(dataField: "skeletonRenderer", containsBoundingBoxes: true)]
|
||||||
public string slotName;
|
public string slotName;
|
||||||
public bool isTrigger;
|
public bool isTrigger, usedByEffector, usedByComposite;
|
||||||
public bool clearStateOnDisable = true;
|
public bool clearStateOnDisable = true;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -167,9 +167,10 @@ namespace Spine.Unity {
|
|||||||
++collidersCount;
|
++collidersCount;
|
||||||
SkeletonUtility.SetColliderPointsLocal(bbCollider, slot, boundingBoxAttachment);
|
SkeletonUtility.SetColliderPointsLocal(bbCollider, slot, boundingBoxAttachment);
|
||||||
bbCollider.isTrigger = isTrigger;
|
bbCollider.isTrigger = isTrigger;
|
||||||
|
bbCollider.usedByEffector = usedByEffector;
|
||||||
|
bbCollider.usedByComposite = usedByComposite;
|
||||||
bbCollider.enabled = false;
|
bbCollider.enabled = false;
|
||||||
bbCollider.hideFlags = HideFlags.NotEditable;
|
bbCollider.hideFlags = HideFlags.NotEditable;
|
||||||
bbCollider.isTrigger = IsTrigger;
|
|
||||||
colliderTable.Add(boundingBoxAttachment, bbCollider);
|
colliderTable.Add(boundingBoxAttachment, bbCollider);
|
||||||
nameTable.Add(boundingBoxAttachment, entry.Name);
|
nameTable.Add(boundingBoxAttachment, entry.Name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,7 +49,7 @@ namespace Spine.Unity {
|
|||||||
public SkeletonGraphic skeletonGraphic;
|
public SkeletonGraphic skeletonGraphic;
|
||||||
[SpineSlot(dataField: "skeletonGraphic", containsBoundingBoxes: true)]
|
[SpineSlot(dataField: "skeletonGraphic", containsBoundingBoxes: true)]
|
||||||
public string slotName;
|
public string slotName;
|
||||||
public bool isTrigger;
|
public bool isTrigger, usedByEffector, usedByComposite;
|
||||||
public bool clearStateOnDisable = true;
|
public bool clearStateOnDisable = true;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -171,9 +171,10 @@ namespace Spine.Unity {
|
|||||||
++collidersCount;
|
++collidersCount;
|
||||||
SkeletonUtility.SetColliderPointsLocal(bbCollider, slot, boundingBoxAttachment, scale);
|
SkeletonUtility.SetColliderPointsLocal(bbCollider, slot, boundingBoxAttachment, scale);
|
||||||
bbCollider.isTrigger = isTrigger;
|
bbCollider.isTrigger = isTrigger;
|
||||||
|
bbCollider.usedByEffector = usedByEffector;
|
||||||
|
bbCollider.usedByComposite = usedByComposite;
|
||||||
bbCollider.enabled = false;
|
bbCollider.enabled = false;
|
||||||
bbCollider.hideFlags = HideFlags.NotEditable;
|
bbCollider.hideFlags = HideFlags.NotEditable;
|
||||||
bbCollider.isTrigger = IsTrigger;
|
|
||||||
colliderTable.Add(boundingBoxAttachment, bbCollider);
|
colliderTable.Add(boundingBoxAttachment, bbCollider);
|
||||||
nameTable.Add(boundingBoxAttachment, entry.Name);
|
nameTable.Add(boundingBoxAttachment, entry.Name);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user