[unity] SkeletonRenderSeparator now respects Mask Interaction mode of parent SkeletonRenderer. Closes #1870.

This commit is contained in:
Harald Csaszar 2026-01-08 15:16:48 +01:00
parent c01a7e1203
commit 690b4bac40
4 changed files with 16 additions and 8 deletions

View File

@ -94,7 +94,9 @@ namespace Spine.Unity {
meshFilter.sharedMesh = null;
}
public void RenderParts (ExposedList<SubmeshInstruction> instructions, int startSubmesh, int endSubmesh) {
public void RenderParts (SkeletonRenderer skeletonRenderer, ExposedList<SubmeshInstruction> instructions,
int startSubmesh, int endSubmesh) {
LazyIntialize();
// STEP 1: Create instruction
@ -125,9 +127,12 @@ namespace Spine.Unity {
meshGenerator.FillVertexData(mesh);
if (updateTriangles) {
meshGenerator.FillTriangles(mesh);
meshRenderer.sharedMaterials = buffers.UpdateSharedMaterialsArray();
} else if (materialsChanged) {
meshRenderer.sharedMaterials = buffers.UpdateSharedMaterialsArray();
}
if (updateTriangles || materialsChanged) {
Material[] materials = buffers.UpdateSharedMaterialsArray();
if (skeletonRenderer)
skeletonRenderer.ConfigureMaterials(materials, currentInstructions.submeshInstructions);
meshRenderer.sharedMaterials = materials;
}
meshGenerator.FillLateVertexData(mesh);
}

View File

@ -281,7 +281,7 @@ namespace Spine.Unity {
if (assignPropertyBlock)
currentRenderer.SetPropertyBlock(copiedBlock);
// Render
currentRenderer.RenderParts(instruction.submeshInstructions, start, si + 1);
currentRenderer.RenderParts(skeletonRenderer, instruction.submeshInstructions, start, si + 1);
start = si + 1;
rendererIndex++;

View File

@ -534,8 +534,7 @@ namespace Spine.Unity {
materialsNeedUpdate = false;
}
protected virtual void ConfigureMaterials (ExposedList<SubmeshInstruction> instructions) {
Material[] sharedMaterials = rendererBuffers.sharedMaterials;
public virtual void ConfigureMaterials (Material[] sharedMaterials, ExposedList<SubmeshInstruction> instructions) {
if (customMaterialOverride.Count > 0) {
for (int i = 0, count = sharedMaterials.Length; i < count; ++i) {
Material material = sharedMaterials[i];
@ -570,6 +569,10 @@ namespace Spine.Unity {
#endif
}
protected virtual void ConfigureMaterials (ExposedList<SubmeshInstruction> instructions) {
ConfigureMaterials(rendererBuffers.sharedMaterials, instructions);
}
#if BUILT_IN_SPRITE_MASK_COMPONENT
private void InitSpriteMaskMaterialsMaskMode (ref MaterialOverrideSet[] maskMaterials,
SkeletonRenderer skeletonRenderer, string overrideSetName,

View File

@ -2,7 +2,7 @@
"name": "com.esotericsoftware.spine.spine-unity",
"displayName": "spine-unity Runtime",
"description": "This plugin provides the spine-unity runtime core and examples. Spine Examples can be installed via the Samples tab.",
"version": "4.3.36",
"version": "4.3.37",
"unity": "2018.3",
"author": {
"name": "Esoteric Software",