mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 01:36:02 +08:00
[unity] SkeletonRenderSeparator now initializes added SkeletonPartsRenderer children correctly. Closes #1269.
This commit is contained in:
parent
7b690624f3
commit
7ee15d0627
@ -51,6 +51,7 @@ namespace Spine.Unity.Modules {
|
||||
SerializedProperty separatorNamesProp;
|
||||
static bool skeletonRendererExpanded = true;
|
||||
bool slotsReapplyRequired = false;
|
||||
bool partsRendererInitRequired = false;
|
||||
|
||||
void OnEnable () {
|
||||
if (component == null)
|
||||
@ -78,6 +79,14 @@ namespace Spine.Unity.Modules {
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI () {
|
||||
|
||||
// Restore mesh part for undo logic after undo of "Add Parts Renderer".
|
||||
// Triggers regeneration and assignment of the mesh filter's mesh.
|
||||
if (component.GetComponent<MeshFilter>() && component.GetComponent<MeshFilter>().sharedMesh == null) {
|
||||
component.OnDisable();
|
||||
component.OnEnable();
|
||||
}
|
||||
|
||||
var componentRenderers = component.partsRenderers;
|
||||
int totalParts;
|
||||
|
||||
@ -177,6 +186,7 @@ namespace Spine.Unity.Modules {
|
||||
if (GUILayout.Button(addMissingLabel, GUILayout.Height(40f))) {
|
||||
AddPartsRenderer(extraRenderersNeeded);
|
||||
DetectOrphanedPartsRenderers(component);
|
||||
partsRendererInitRequired = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -202,14 +212,22 @@ namespace Spine.Unity.Modules {
|
||||
}
|
||||
|
||||
// (Button) Add Part Renderer button
|
||||
if (GUILayout.Button("Add Parts Renderer"))
|
||||
if (GUILayout.Button("Add Parts Renderer")) {
|
||||
AddPartsRenderer(1);
|
||||
partsRendererInitRequired = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
|
||||
if (partsRendererInitRequired) {
|
||||
Undo.RegisterCompleteObjectUndo(component.GetComponent<MeshRenderer>(), "Add Parts Renderers");
|
||||
component.OnEnable();
|
||||
partsRendererInitRequired = false;
|
||||
}
|
||||
|
||||
if (slotsReapplyRequired && UnityEngine.Event.current.type == EventType.Repaint) {
|
||||
component.SkeletonRenderer.ReapplySeparatorSlotNames();
|
||||
component.SkeletonRenderer.LateUpdate();
|
||||
|
||||
@ -151,7 +151,7 @@ namespace Spine.Unity.Modules {
|
||||
}
|
||||
#endregion
|
||||
|
||||
void OnEnable () {
|
||||
public void OnEnable () {
|
||||
if (skeletonRenderer == null) return;
|
||||
if (copiedBlock == null) copiedBlock = new MaterialPropertyBlock();
|
||||
mainMeshRenderer = skeletonRenderer.GetComponent<MeshRenderer>();
|
||||
@ -184,7 +184,7 @@ namespace Spine.Unity.Modules {
|
||||
}
|
||||
}
|
||||
|
||||
void OnDisable () {
|
||||
public void OnDisable () {
|
||||
if (skeletonRenderer == null) return;
|
||||
#if SPINE_OPTIONAL_RENDEROVERRIDE
|
||||
skeletonRenderer.GenerateMeshOverride -= HandleRender;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user