mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 09:46: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;
|
SerializedProperty separatorNamesProp;
|
||||||
static bool skeletonRendererExpanded = true;
|
static bool skeletonRendererExpanded = true;
|
||||||
bool slotsReapplyRequired = false;
|
bool slotsReapplyRequired = false;
|
||||||
|
bool partsRendererInitRequired = false;
|
||||||
|
|
||||||
void OnEnable () {
|
void OnEnable () {
|
||||||
if (component == null)
|
if (component == null)
|
||||||
@ -78,6 +79,14 @@ namespace Spine.Unity.Modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void OnInspectorGUI () {
|
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;
|
var componentRenderers = component.partsRenderers;
|
||||||
int totalParts;
|
int totalParts;
|
||||||
|
|
||||||
@ -177,6 +186,7 @@ namespace Spine.Unity.Modules {
|
|||||||
if (GUILayout.Button(addMissingLabel, GUILayout.Height(40f))) {
|
if (GUILayout.Button(addMissingLabel, GUILayout.Height(40f))) {
|
||||||
AddPartsRenderer(extraRenderersNeeded);
|
AddPartsRenderer(extraRenderersNeeded);
|
||||||
DetectOrphanedPartsRenderers(component);
|
DetectOrphanedPartsRenderers(component);
|
||||||
|
partsRendererInitRequired = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -202,14 +212,22 @@ namespace Spine.Unity.Modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// (Button) Add Part Renderer button
|
// (Button) Add Part Renderer button
|
||||||
if (GUILayout.Button("Add Parts Renderer"))
|
if (GUILayout.Button("Add Parts Renderer")) {
|
||||||
AddPartsRenderer(1);
|
AddPartsRenderer(1);
|
||||||
|
partsRendererInitRequired = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
serializedObject.ApplyModifiedProperties();
|
serializedObject.ApplyModifiedProperties();
|
||||||
|
|
||||||
|
if (partsRendererInitRequired) {
|
||||||
|
Undo.RegisterCompleteObjectUndo(component.GetComponent<MeshRenderer>(), "Add Parts Renderers");
|
||||||
|
component.OnEnable();
|
||||||
|
partsRendererInitRequired = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (slotsReapplyRequired && UnityEngine.Event.current.type == EventType.Repaint) {
|
if (slotsReapplyRequired && UnityEngine.Event.current.type == EventType.Repaint) {
|
||||||
component.SkeletonRenderer.ReapplySeparatorSlotNames();
|
component.SkeletonRenderer.ReapplySeparatorSlotNames();
|
||||||
component.SkeletonRenderer.LateUpdate();
|
component.SkeletonRenderer.LateUpdate();
|
||||||
|
|||||||
@ -151,7 +151,7 @@ namespace Spine.Unity.Modules {
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
void OnEnable () {
|
public void OnEnable () {
|
||||||
if (skeletonRenderer == null) return;
|
if (skeletonRenderer == null) return;
|
||||||
if (copiedBlock == null) copiedBlock = new MaterialPropertyBlock();
|
if (copiedBlock == null) copiedBlock = new MaterialPropertyBlock();
|
||||||
mainMeshRenderer = skeletonRenderer.GetComponent<MeshRenderer>();
|
mainMeshRenderer = skeletonRenderer.GetComponent<MeshRenderer>();
|
||||||
@ -184,7 +184,7 @@ namespace Spine.Unity.Modules {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDisable () {
|
public void OnDisable () {
|
||||||
if (skeletonRenderer == null) return;
|
if (skeletonRenderer == null) return;
|
||||||
#if SPINE_OPTIONAL_RENDEROVERRIDE
|
#if SPINE_OPTIONAL_RENDEROVERRIDE
|
||||||
skeletonRenderer.GenerateMeshOverride -= HandleRender;
|
skeletonRenderer.GenerateMeshOverride -= HandleRender;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user