[Unity] SkeletonRenderSeparator: Fixed Update When Invisible modes leading to invisible skeleton. Fixed Enable Separator property not triggering component dirty state/undo. Closes #1960.

This commit is contained in:
Harald Csaszar 2022-10-10 16:25:47 +02:00
parent 88515ec1a9
commit 8f01d089e4
2 changed files with 17 additions and 12 deletions

View File

@ -105,8 +105,10 @@ namespace Spine.Unity.Examples {
using (new SpineInspectorUtility.LabelWidthScope()) {
bool componentEnabled = component.enabled;
bool checkBox = EditorGUILayout.Toggle("Enable Separator", componentEnabled);
if (checkBox != componentEnabled)
component.enabled = checkBox;
if (checkBox != componentEnabled) {
Undo.RecordObject(target, "Enable SkeletonRenderSeparator");
EditorUtility.SetObjectEnabled(target, checkBox);
}
if (component.SkeletonRenderer.disableRenderingOnOverride && !component.enabled)
EditorGUILayout.HelpBox("By default, SkeletonRenderer's MeshRenderer is disabled while the SkeletonRenderSeparator takes over rendering. It is re-enabled when SkeletonRenderSeparator is disabled.", MessageType.Info);
@ -242,7 +244,7 @@ namespace Spine.Unity.Examples {
if (slotsReapplyRequired && UnityEngine.Event.current.type == EventType.Repaint) {
component.SkeletonRenderer.ReapplySeparatorSlotNames();
component.SkeletonRenderer.LateUpdate();
component.SkeletonRenderer.LateUpdateMesh();
SceneView.RepaintAll();
slotsReapplyRequired = false;
}

View File

@ -124,7 +124,7 @@ namespace Spine.Unity {
if (!Application.isPlaying) {
skeletonRenderer.enabled = false;
skeletonRenderer.enabled = true;
skeletonRenderer.LateUpdate();
skeletonRenderer.LateUpdateMesh();
}
#endif
@ -187,6 +187,9 @@ namespace Spine.Unity {
mr.probeAnchor = probeAnchor;
}
}
if (skeletonRenderer.updateWhenInvisible != UpdateMode.FullUpdate)
skeletonRenderer.LateUpdateMesh();
}
public void OnDisable () {
@ -194,13 +197,8 @@ namespace Spine.Unity {
#if SPINE_OPTIONAL_RENDEROVERRIDE
skeletonRenderer.GenerateMeshOverride -= HandleRender;
#endif
skeletonRenderer.LateUpdate();
foreach (var partsRenderer in partsRenderers) {
if (partsRenderer != null)
partsRenderer.ClearMesh();
}
skeletonRenderer.LateUpdateMesh();
ClearPartsRendererMeshes();
}
MaterialPropertyBlock copiedBlock;
@ -262,8 +260,13 @@ namespace Spine.Unity {
if (currentRenderer != null)
partsRenderers[rendererIndex].ClearMesh();
}
}
protected void ClearPartsRendererMeshes () {
foreach (var partsRenderer in partsRenderers) {
if (partsRenderer != null)
partsRenderer.ClearMesh();
}
}
}
}